<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>8SVM-下 - 案例部分源码-处理地点</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
[dir="rtl"] #ipython_notebook {
  float: right !important;
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
[dir="rtl"] #tabs li {
  float: right;
}
ul#tabs {
  margin-bottom: 4px;
}
[dir="rtl"] ul#tabs {
  margin-right: 0px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons {
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-right {
  padding-top: 1px;
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-left {
  float: right !important;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
[dir="rtl"] #tree-selector a {
  float: right;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
[dir="rtl"] #new-menu {
  text-align: right;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
[dir="rtl"] #running .col-sm-8 {
  float: right !important;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  min-width: 0;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 21ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  width: 100%;
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
  padding: 10px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#23548;&#24211;&#23548;&#25968;&#25454;&#65292;&#25506;&#32034;&#29305;&#24449;">&#23548;&#24211;&#23548;&#25968;&#25454;&#65292;&#25506;&#32034;&#29305;&#24449;<a class="anchor-link" href="#&#23548;&#24211;&#23548;&#25968;&#25454;&#65292;&#25506;&#32034;&#29305;&#24449;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">train_test_split</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">weather</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;weatherAUS5000.csv&quot;</span><span class="p">,</span><span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[3]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">weather</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[3]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainTomorrow</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2015-03-24</td>
      <td>Adelaide</td>
      <td>12.3</td>
      <td>19.3</td>
      <td>0.0</td>
      <td>5.0</td>
      <td>NaN</td>
      <td>S</td>
      <td>39.0</td>
      <td>S</td>
      <td>...</td>
      <td>19.0</td>
      <td>59.0</td>
      <td>47.0</td>
      <td>1022.2</td>
      <td>1021.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>15.1</td>
      <td>17.7</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2011-07-12</td>
      <td>Adelaide</td>
      <td>7.9</td>
      <td>11.4</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.5</td>
      <td>N</td>
      <td>20.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>7.0</td>
      <td>70.0</td>
      <td>59.0</td>
      <td>1028.7</td>
      <td>1025.7</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>8.4</td>
      <td>11.3</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2010-02-08</td>
      <td>Adelaide</td>
      <td>24.0</td>
      <td>38.1</td>
      <td>0.0</td>
      <td>23.4</td>
      <td>13.0</td>
      <td>SE</td>
      <td>39.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>19.0</td>
      <td>36.0</td>
      <td>24.0</td>
      <td>1018.0</td>
      <td>1016.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>32.4</td>
      <td>37.4</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2016-09-19</td>
      <td>Adelaide</td>
      <td>6.7</td>
      <td>16.4</td>
      <td>0.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>N</td>
      <td>31.0</td>
      <td>N</td>
      <td>...</td>
      <td>15.0</td>
      <td>65.0</td>
      <td>40.0</td>
      <td>1014.4</td>
      <td>1010.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>11.2</td>
      <td>15.9</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2014-03-05</td>
      <td>Adelaide</td>
      <td>16.7</td>
      <td>24.8</td>
      <td>0.0</td>
      <td>6.6</td>
      <td>11.7</td>
      <td>S</td>
      <td>37.0</td>
      <td>S</td>
      <td>...</td>
      <td>24.0</td>
      <td>61.0</td>
      <td>48.0</td>
      <td>1019.3</td>
      <td>1018.9</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>20.8</td>
      <td>23.7</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#将特征矩阵和标签Y分开</span>
<span class="n">X</span> <span class="o">=</span> <span class="n">weather</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="n">Y</span> <span class="o">=</span> <span class="n">weather</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#分裂的快捷键：ctrl shift -</span>

<span class="c1">#合并的快捷键：shift M</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[5]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X</span><span class="o">.</span><span class="n">shape</span> <span class="c1">#5000行是我随机选的</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[5]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(5000, 21)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[6]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#探索数据类型</span>
<span class="n">X</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
Int64Index: 5000 entries, 0 to 4999
Data columns (total 21 columns):
Date             5000 non-null object
Location         5000 non-null object
MinTemp          4979 non-null float64
MaxTemp          4987 non-null float64
Rainfall         4950 non-null float64
Evaporation      2841 non-null float64
Sunshine         2571 non-null float64
WindGustDir      4669 non-null object
WindGustSpeed    4669 non-null float64
WindDir9am       4651 non-null object
WindDir3pm       4887 non-null object
WindSpeed9am     4949 non-null float64
WindSpeed3pm     4919 non-null float64
Humidity9am      4936 non-null float64
Humidity3pm      4880 non-null float64
Pressure9am      4506 non-null float64
Pressure3pm      4504 non-null float64
Cloud9am         3111 non-null float64
Cloud3pm         3012 non-null float64
Temp9am          4967 non-null float64
Temp3pm          4912 non-null float64
dtypes: float64(16), object(5)
memory usage: 859.4+ KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#探索缺失值</span>
<span class="n">X</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> <span class="c1">#缺失值所占总值的比例 isnull().sum(全部的True)/X.shape[0]</span>
<span class="c1">#我们要有不同的缺失值填补策略</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[7]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Date             0.0000
Location         0.0000
MinTemp          0.0042
MaxTemp          0.0026
Rainfall         0.0100
Evaporation      0.4318
Sunshine         0.4858
WindGustDir      0.0662
WindGustSpeed    0.0662
WindDir9am       0.0698
WindDir3pm       0.0226
WindSpeed9am     0.0102
WindSpeed3pm     0.0162
Humidity9am      0.0128
Humidity3pm      0.0240
Pressure9am      0.0988
Pressure3pm      0.0992
Cloud9am         0.3778
Cloud3pm         0.3976
Temp9am          0.0066
Temp3pm          0.0176
dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#在上方添加一个新的cell ESC a enter</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#在下方添加一个新的cell ESC b enter</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#删除一个cell ESC d d</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#20998;&#38598;&#65292;&#20248;&#20808;&#25506;&#32034;&#26631;&#31614;">&#20998;&#38598;&#65292;&#20248;&#20808;&#25506;&#32034;&#26631;&#31614;<a class="anchor-link" href="#&#20998;&#38598;&#65292;&#20248;&#20808;&#25506;&#32034;&#26631;&#31614;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[8]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Y</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[8]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(5000,)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[9]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Y</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="c1">#加和的时候，True是1，False是0</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[9]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">type</span><span class="p">(</span><span class="n">Y</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>pandas.core.series.Series</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Y</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([&#39;No&#39;, &#39;Yes&#39;], dtype=object)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#探索标签的分类</span>
<span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">Y</span><span class="p">)</span> <span class="c1">#我们的标签是二分类</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([&#39;No&#39;, &#39;Yes&#39;], dtype=object)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#分训练集和测试集</span>
<span class="n">Xtrain</span><span class="p">,</span> <span class="n">Xtest</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">,</span> <span class="n">Ytest</span> <span class="o">=</span> <span class="n">train_test_split</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">Y</span><span class="p">,</span><span class="n">test_size</span><span class="o">=</span><span class="mf">0.3</span><span class="p">,</span><span class="n">random_state</span><span class="o">=</span><span class="mi">420</span><span class="p">)</span> <span class="c1">#随机抽样</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[11]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[11]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed9am</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1809</th>
      <td>2015-08-24</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>17.0</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>4176</th>
      <td>2016-12-10</td>
      <td>Tuggeranong</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>7.0</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
    </tr>
    <tr>
      <th>110</th>
      <td>2010-04-18</td>
      <td>Albany</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
    </tr>
    <tr>
      <th>3582</th>
      <td>2009-11-26</td>
      <td>Sale</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>11.0</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
    </tr>
    <tr>
      <th>2162</th>
      <td>2014-04-25</td>
      <td>Mildura</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 21 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#恢复索引</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">[</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Xtest</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">,</span> <span class="n">Ytest</span><span class="p">]:</span>
    <span class="n">i</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[13]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[13]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed9am</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2015-08-24</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>17.0</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2016-12-10</td>
      <td>Tuggeranong</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>7.0</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2010-04-18</td>
      <td>Albany</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2009-11-26</td>
      <td>Sale</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>11.0</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2014-04-25</td>
      <td>Mildura</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 21 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[14]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[14]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0     No
1     No
2     No
3    Yes
4     No
Name: RainTomorrow, dtype: object</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[15]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#是否有样本不平衡问题？</span>
<span class="n">Ytrain</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[15]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>No     2704
Yes     796
Name: RainTomorrow, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[16]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytest</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[16]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>No     1157
Yes     343
Name: RainTomorrow, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#有轻微的样本不均衡问题</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[17]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">/</span><span class="n">Ytrain</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[17]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>3.3969849246231156</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#将标签编码</span>
<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">LabelEncoder</span> <span class="c1">#标签专用，第三章讲过</span>
<span class="n">encorder</span> <span class="o">=</span> <span class="n">LabelEncoder</span><span class="p">()</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Ytrain</span><span class="p">)</span> <span class="c1">#允许一维数据的输入的</span>
<span class="c1">#认得了：有两类，YES和NO，YES是1，NO是0</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#36716;&#25442;&#25104;dataframe&#21518;&#30340;&#26631;&#31614;&#20026;&#20108;&#32500;&#25968;&#25454;">&#36716;&#25442;&#25104;dataframe&#21518;&#30340;&#26631;&#31614;&#20026;&#20108;&#32500;&#25968;&#25454;<a class="anchor-link" href="#&#36716;&#25442;&#25104;dataframe&#21518;&#30340;&#26631;&#31614;&#20026;&#20108;&#32500;&#25968;&#25454;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#使用训练集进行训练，然后在训练集和测试集上分别进行transform</span>
<span class="n">Ytrain</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">encorder</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Ytrain</span><span class="p">))</span>
<span class="n">Ytest</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">encorder</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Ytest</span><span class="p">))</span>
<span class="c1"># 后面需要进行降维</span>

<span class="c1">#如果我们的测试集中，出现了训练集中没有出现过的标签类别</span>
<span class="c1">#比如说，测试集中有YES, NO, UNKNOWN</span>
<span class="c1">#而我们的训练集中只有YES和NO</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[20]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[20]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>1</td>
    </tr>
    <tr>
      <th>4</th>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[21]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytest</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[21]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>1</td>
    </tr>
    <tr>
      <th>3</th>
      <td>0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="s2">&quot;你想要保存这个文件的地址.文件名.csv&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#22788;&#29702;&#29305;&#24449;">&#22788;&#29702;&#29305;&#24449;<a class="anchor-link" href="#&#22788;&#29702;&#29305;&#24449;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="1-&#25551;&#36848;&#24615;&#32479;&#35745;&#19982;&#24322;&#24120;&#20540;">1 &#25551;&#36848;&#24615;&#32479;&#35745;&#19982;&#24322;&#24120;&#20540;<a class="anchor-link" href="#1-&#25551;&#36848;&#24615;&#32479;&#35745;&#19982;&#24322;&#24120;&#20540;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[22]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#描述性统计</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">describe</span><span class="p">([</span><span class="mf">0.01</span><span class="p">,</span><span class="mf">0.05</span><span class="p">,</span><span class="mf">0.1</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.75</span><span class="p">,</span><span class="mf">0.9</span><span class="p">,</span><span class="mf">0.99</span><span class="p">])</span><span class="o">.</span><span class="n">T</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[22]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>count</th>
      <th>mean</th>
      <th>std</th>
      <th>min</th>
      <th>1%</th>
      <th>5%</th>
      <th>10%</th>
      <th>25%</th>
      <th>50%</th>
      <th>75%</th>
      <th>90%</th>
      <th>99%</th>
      <th>max</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>MinTemp</th>
      <td>3486.0</td>
      <td>12.225645</td>
      <td>6.396243</td>
      <td>-6.5</td>
      <td>-1.715</td>
      <td>1.800</td>
      <td>4.1</td>
      <td>7.7</td>
      <td>12.0</td>
      <td>16.7</td>
      <td>20.9</td>
      <td>25.900</td>
      <td>29.0</td>
    </tr>
    <tr>
      <th>MaxTemp</th>
      <td>3489.0</td>
      <td>23.245543</td>
      <td>7.201839</td>
      <td>-3.7</td>
      <td>8.888</td>
      <td>12.840</td>
      <td>14.5</td>
      <td>18.0</td>
      <td>22.5</td>
      <td>28.4</td>
      <td>33.0</td>
      <td>40.400</td>
      <td>46.4</td>
    </tr>
    <tr>
      <th>Rainfall</th>
      <td>3467.0</td>
      <td>2.487049</td>
      <td>7.949686</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.8</td>
      <td>6.6</td>
      <td>41.272</td>
      <td>115.8</td>
    </tr>
    <tr>
      <th>Evaporation</th>
      <td>1983.0</td>
      <td>5.619163</td>
      <td>4.383098</td>
      <td>0.0</td>
      <td>0.400</td>
      <td>0.800</td>
      <td>1.4</td>
      <td>2.6</td>
      <td>4.8</td>
      <td>7.4</td>
      <td>10.2</td>
      <td>20.600</td>
      <td>56.0</td>
    </tr>
    <tr>
      <th>Sunshine</th>
      <td>1790.0</td>
      <td>7.508659</td>
      <td>3.805841</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.345</td>
      <td>1.4</td>
      <td>4.6</td>
      <td>8.3</td>
      <td>10.6</td>
      <td>12.0</td>
      <td>13.300</td>
      <td>13.9</td>
    </tr>
    <tr>
      <th>WindGustSpeed</th>
      <td>3263.0</td>
      <td>39.858413</td>
      <td>13.219607</td>
      <td>9.0</td>
      <td>15.000</td>
      <td>20.000</td>
      <td>24.0</td>
      <td>31.0</td>
      <td>39.0</td>
      <td>48.0</td>
      <td>57.0</td>
      <td>76.000</td>
      <td>117.0</td>
    </tr>
    <tr>
      <th>WindSpeed9am</th>
      <td>3466.0</td>
      <td>14.046163</td>
      <td>8.670472</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>4.0</td>
      <td>7.0</td>
      <td>13.0</td>
      <td>19.0</td>
      <td>26.0</td>
      <td>37.000</td>
      <td>65.0</td>
    </tr>
    <tr>
      <th>WindSpeed3pm</th>
      <td>3437.0</td>
      <td>18.553390</td>
      <td>8.611818</td>
      <td>0.0</td>
      <td>2.000</td>
      <td>6.000</td>
      <td>7.0</td>
      <td>13.0</td>
      <td>19.0</td>
      <td>24.0</td>
      <td>30.0</td>
      <td>43.000</td>
      <td>65.0</td>
    </tr>
    <tr>
      <th>Humidity9am</th>
      <td>3459.0</td>
      <td>69.069095</td>
      <td>18.787698</td>
      <td>2.0</td>
      <td>18.000</td>
      <td>35.000</td>
      <td>45.0</td>
      <td>57.0</td>
      <td>70.0</td>
      <td>83.0</td>
      <td>94.0</td>
      <td>100.000</td>
      <td>100.0</td>
    </tr>
    <tr>
      <th>Humidity3pm</th>
      <td>3408.0</td>
      <td>51.651995</td>
      <td>20.697872</td>
      <td>2.0</td>
      <td>9.000</td>
      <td>17.000</td>
      <td>23.0</td>
      <td>37.0</td>
      <td>52.0</td>
      <td>66.0</td>
      <td>79.0</td>
      <td>98.000</td>
      <td>100.0</td>
    </tr>
    <tr>
      <th>Pressure9am</th>
      <td>3154.0</td>
      <td>1017.622067</td>
      <td>7.065236</td>
      <td>985.1</td>
      <td>1000.506</td>
      <td>1006.100</td>
      <td>1008.9</td>
      <td>1012.8</td>
      <td>1017.6</td>
      <td>1022.3</td>
      <td>1027.0</td>
      <td>1033.247</td>
      <td>1038.1</td>
    </tr>
    <tr>
      <th>Pressure3pm</th>
      <td>3154.0</td>
      <td>1015.227077</td>
      <td>7.032531</td>
      <td>980.2</td>
      <td>998.000</td>
      <td>1004.000</td>
      <td>1006.5</td>
      <td>1010.3</td>
      <td>1015.2</td>
      <td>1020.0</td>
      <td>1024.4</td>
      <td>1030.800</td>
      <td>1036.0</td>
    </tr>
    <tr>
      <th>Cloud9am</th>
      <td>2171.0</td>
      <td>4.491939</td>
      <td>2.858781</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>5.0</td>
      <td>7.0</td>
      <td>8.0</td>
      <td>8.000</td>
      <td>8.0</td>
    </tr>
    <tr>
      <th>Cloud3pm</th>
      <td>2095.0</td>
      <td>4.603819</td>
      <td>2.655765</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>5.0</td>
      <td>7.0</td>
      <td>8.0</td>
      <td>8.000</td>
      <td>8.0</td>
    </tr>
    <tr>
      <th>Temp9am</th>
      <td>3481.0</td>
      <td>16.989859</td>
      <td>6.537552</td>
      <td>-5.2</td>
      <td>2.400</td>
      <td>7.000</td>
      <td>9.0</td>
      <td>12.2</td>
      <td>16.6</td>
      <td>21.6</td>
      <td>26.0</td>
      <td>31.000</td>
      <td>38.0</td>
    </tr>
    <tr>
      <th>Temp3pm</th>
      <td>3431.0</td>
      <td>21.719003</td>
      <td>7.031199</td>
      <td>-4.1</td>
      <td>7.460</td>
      <td>11.500</td>
      <td>13.3</td>
      <td>16.6</td>
      <td>21.0</td>
      <td>26.6</td>
      <td>31.4</td>
      <td>38.600</td>
      <td>45.9</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">describe</span><span class="p">([</span><span class="mf">0.01</span><span class="p">,</span><span class="mf">0.05</span><span class="p">,</span><span class="mf">0.1</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.75</span><span class="p">,</span><span class="mf">0.9</span><span class="p">,</span><span class="mf">0.99</span><span class="p">])</span><span class="o">.</span><span class="n">T</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>count</th>
      <th>mean</th>
      <th>std</th>
      <th>min</th>
      <th>1%</th>
      <th>5%</th>
      <th>10%</th>
      <th>25%</th>
      <th>50%</th>
      <th>75%</th>
      <th>90%</th>
      <th>99%</th>
      <th>max</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>MinTemp</th>
      <td>1493.0</td>
      <td>11.916812</td>
      <td>6.375377</td>
      <td>-8.5</td>
      <td>-2.024</td>
      <td>1.600</td>
      <td>3.70</td>
      <td>7.3</td>
      <td>11.8</td>
      <td>16.5</td>
      <td>20.48</td>
      <td>25.316</td>
      <td>28.3</td>
    </tr>
    <tr>
      <th>MaxTemp</th>
      <td>1498.0</td>
      <td>22.906809</td>
      <td>6.986043</td>
      <td>-0.8</td>
      <td>9.134</td>
      <td>13.000</td>
      <td>14.50</td>
      <td>17.8</td>
      <td>22.4</td>
      <td>27.8</td>
      <td>32.60</td>
      <td>38.303</td>
      <td>45.1</td>
    </tr>
    <tr>
      <th>Rainfall</th>
      <td>1483.0</td>
      <td>2.241807</td>
      <td>7.988822</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>0.00</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.8</td>
      <td>5.20</td>
      <td>35.372</td>
      <td>108.2</td>
    </tr>
    <tr>
      <th>Evaporation</th>
      <td>858.0</td>
      <td>5.657809</td>
      <td>4.105762</td>
      <td>0.0</td>
      <td>0.400</td>
      <td>1.000</td>
      <td>1.60</td>
      <td>2.8</td>
      <td>4.8</td>
      <td>7.6</td>
      <td>10.40</td>
      <td>19.458</td>
      <td>38.8</td>
    </tr>
    <tr>
      <th>Sunshine</th>
      <td>781.0</td>
      <td>7.677465</td>
      <td>3.862294</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.300</td>
      <td>1.50</td>
      <td>4.7</td>
      <td>8.6</td>
      <td>10.7</td>
      <td>12.20</td>
      <td>13.400</td>
      <td>13.9</td>
    </tr>
    <tr>
      <th>WindGustSpeed</th>
      <td>1406.0</td>
      <td>40.044097</td>
      <td>14.027052</td>
      <td>9.0</td>
      <td>15.000</td>
      <td>20.000</td>
      <td>24.00</td>
      <td>30.0</td>
      <td>39.0</td>
      <td>48.0</td>
      <td>57.00</td>
      <td>78.000</td>
      <td>122.0</td>
    </tr>
    <tr>
      <th>WindSpeed9am</th>
      <td>1483.0</td>
      <td>13.986514</td>
      <td>9.124337</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>4.00</td>
      <td>7.0</td>
      <td>13.0</td>
      <td>20.0</td>
      <td>26.00</td>
      <td>39.360</td>
      <td>72.0</td>
    </tr>
    <tr>
      <th>WindSpeed3pm</th>
      <td>1482.0</td>
      <td>18.601215</td>
      <td>8.850446</td>
      <td>0.0</td>
      <td>2.000</td>
      <td>6.000</td>
      <td>7.00</td>
      <td>13.0</td>
      <td>19.0</td>
      <td>24.0</td>
      <td>31.00</td>
      <td>43.000</td>
      <td>56.0</td>
    </tr>
    <tr>
      <th>Humidity9am</th>
      <td>1477.0</td>
      <td>68.688558</td>
      <td>18.876448</td>
      <td>4.0</td>
      <td>20.000</td>
      <td>36.000</td>
      <td>44.00</td>
      <td>57.0</td>
      <td>69.0</td>
      <td>82.0</td>
      <td>95.00</td>
      <td>100.000</td>
      <td>100.0</td>
    </tr>
    <tr>
      <th>Humidity3pm</th>
      <td>1472.0</td>
      <td>51.431386</td>
      <td>20.459957</td>
      <td>2.0</td>
      <td>8.710</td>
      <td>18.000</td>
      <td>23.00</td>
      <td>37.0</td>
      <td>52.0</td>
      <td>66.0</td>
      <td>78.00</td>
      <td>96.290</td>
      <td>100.0</td>
    </tr>
    <tr>
      <th>Pressure9am</th>
      <td>1352.0</td>
      <td>1017.763536</td>
      <td>6.910275</td>
      <td>988.5</td>
      <td>1000.900</td>
      <td>1006.255</td>
      <td>1008.61</td>
      <td>1013.2</td>
      <td>1017.8</td>
      <td>1022.3</td>
      <td>1026.50</td>
      <td>1033.449</td>
      <td>1038.2</td>
    </tr>
    <tr>
      <th>Pressure3pm</th>
      <td>1350.0</td>
      <td>1015.397926</td>
      <td>6.916976</td>
      <td>986.2</td>
      <td>999.198</td>
      <td>1003.900</td>
      <td>1006.49</td>
      <td>1010.9</td>
      <td>1015.4</td>
      <td>1020.0</td>
      <td>1024.20</td>
      <td>1031.151</td>
      <td>1036.9</td>
    </tr>
    <tr>
      <th>Cloud9am</th>
      <td>940.0</td>
      <td>4.494681</td>
      <td>2.870468</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>1.00</td>
      <td>1.0</td>
      <td>5.0</td>
      <td>7.0</td>
      <td>8.00</td>
      <td>8.000</td>
      <td>8.0</td>
    </tr>
    <tr>
      <th>Cloud3pm</th>
      <td>917.0</td>
      <td>4.403490</td>
      <td>2.731969</td>
      <td>0.0</td>
      <td>0.000</td>
      <td>0.000</td>
      <td>1.00</td>
      <td>2.0</td>
      <td>5.0</td>
      <td>7.0</td>
      <td>8.00</td>
      <td>8.000</td>
      <td>8.0</td>
    </tr>
    <tr>
      <th>Temp9am</th>
      <td>1486.0</td>
      <td>16.751817</td>
      <td>6.339816</td>
      <td>-5.3</td>
      <td>2.370</td>
      <td>6.725</td>
      <td>9.00</td>
      <td>12.1</td>
      <td>16.5</td>
      <td>21.3</td>
      <td>25.45</td>
      <td>30.200</td>
      <td>35.1</td>
    </tr>
    <tr>
      <th>Temp3pm</th>
      <td>1481.0</td>
      <td>21.483660</td>
      <td>6.770567</td>
      <td>-1.2</td>
      <td>8.540</td>
      <td>11.800</td>
      <td>13.30</td>
      <td>16.5</td>
      <td>20.9</td>
      <td>26.2</td>
      <td>30.90</td>
      <td>37.400</td>
      <td>42.9</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#对于去kaggle上下载了数据的小伙伴们，以及对于坚持要使用完整版数据的（15W行）数据的小伙伴们</span>
<span class="c1">#如果你发现了异常值，首先你要观察，这个异常值出现的频率</span>
<span class="c1">#如果异常值只出现了一次，多半是输入错误，直接把异常值删除</span>
<span class="c1">#如果异常值出现了多次，去跟业务人员沟通，人为造成的错误异常值留着是没有用的</span>
<span class="c1">#如果异常值占到你总数据量的10%左右了 - 把异常值替换成非异常但是非干扰的项，比如说用0来进行替换，或者把异常当缺失</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed9am</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2015-08-24</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>17.0</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2016-12-10</td>
      <td>Tuggeranong</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>7.0</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2010-04-18</td>
      <td>Albany</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2009-11-26</td>
      <td>Sale</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>11.0</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2014-04-25</td>
      <td>Mildura</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 21 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="2-&#22788;&#29702;&#22256;&#38590;&#29305;&#24449;&#65306;&#26085;&#26399;">2 &#22788;&#29702;&#22256;&#38590;&#29305;&#24449;&#65306;&#26085;&#26399;<a class="anchor-link" href="#2-&#22788;&#29702;&#22256;&#38590;&#29305;&#24449;&#65306;&#26085;&#26399;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[23]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">type</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">])</span> <span class="c1">#字符串</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[23]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>str</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#我们现在拥有的日期特征，是连续型特征，还是分类型特征</span>
<span class="c1">#2019-1-6</span>
<span class="c1">#2019-1-6.5</span>
<span class="c1">#日期是一年分了365类的分类型变量</span>
<span class="c1">#我们的日期特征中，日期是否有重复</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[24]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[24]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>2015-07-03    6
2015-10-12    6
2014-05-16    6
2009-07-17    5
2011-09-04    5
2014-06-16    5
2012-07-18    5
2014-07-26    5
2010-11-03    5
2012-09-18    5
2011-11-04    5
2014-02-12    5
2014-03-12    5
2011-07-19    5
2009-06-29    5
2012-11-23    5
2009-03-30    5
2010-05-18    5
2016-09-07    5
2017-01-09    5
2013-12-20    5
2016-11-01    5
2016-11-25    4
2010-12-11    4
2015-10-04    4
2011-02-05    4
2015-11-15    4
2010-10-31    4
2015-03-16    4
2014-08-17    4
             ..
2015-05-29    1
2013-07-29    1
2015-07-30    1
2009-08-11    1
2014-06-30    1
2016-02-26    1
2012-05-21    1
2014-07-31    1
2016-04-04    1
2010-09-11    1
2013-12-22    1
2010-01-15    1
2015-11-13    1
2015-11-05    1
2012-10-13    1
2009-03-15    1
2017-01-04    1
2014-07-21    1
2010-09-07    1
2008-07-25    1
2014-06-27    1
2017-04-28    1
2010-06-07    1
2011-12-25    1
2015-08-14    1
2011-02-23    1
2017-04-11    1
2010-11-02    1
2014-08-07    1
2009-10-20    1
Name: Date, Length: 2141, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrainc</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrainc</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="s2">&quot;Location&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed9am</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2796</th>
      <td>2015-03-24</td>
      <td>Adelaide</td>
      <td>12.3</td>
      <td>19.3</td>
      <td>0.0</td>
      <td>5.0</td>
      <td>NaN</td>
      <td>S</td>
      <td>39.0</td>
      <td>S</td>
      <td>...</td>
      <td>13.0</td>
      <td>19.0</td>
      <td>59.0</td>
      <td>47.0</td>
      <td>1022.2</td>
      <td>1021.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>15.1</td>
      <td>17.7</td>
    </tr>
    <tr>
      <th>2975</th>
      <td>2012-08-17</td>
      <td>Adelaide</td>
      <td>7.8</td>
      <td>13.2</td>
      <td>17.6</td>
      <td>0.8</td>
      <td>NaN</td>
      <td>SW</td>
      <td>61.0</td>
      <td>SW</td>
      <td>...</td>
      <td>20.0</td>
      <td>28.0</td>
      <td>76.0</td>
      <td>47.0</td>
      <td>1012.5</td>
      <td>1014.7</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>8.3</td>
      <td>12.5</td>
    </tr>
    <tr>
      <th>775</th>
      <td>2013-03-16</td>
      <td>Adelaide</td>
      <td>17.4</td>
      <td>23.8</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>9.7</td>
      <td>SSE</td>
      <td>46.0</td>
      <td>S</td>
      <td>...</td>
      <td>9.0</td>
      <td>19.0</td>
      <td>63.0</td>
      <td>57.0</td>
      <td>1019.9</td>
      <td>1020.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>19.1</td>
      <td>20.7</td>
    </tr>
    <tr>
      <th>861</th>
      <td>2011-07-12</td>
      <td>Adelaide</td>
      <td>7.9</td>
      <td>11.4</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>0.5</td>
      <td>N</td>
      <td>20.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>70.0</td>
      <td>59.0</td>
      <td>1028.7</td>
      <td>1025.7</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>8.4</td>
      <td>11.3</td>
    </tr>
    <tr>
      <th>2906</th>
      <td>2015-08-24</td>
      <td>Adelaide</td>
      <td>9.2</td>
      <td>14.3</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SE</td>
      <td>48.0</td>
      <td>SE</td>
      <td>...</td>
      <td>17.0</td>
      <td>19.0</td>
      <td>64.0</td>
      <td>42.0</td>
      <td>1024.7</td>
      <td>1024.1</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>9.9</td>
      <td>13.4</td>
    </tr>
    <tr>
      <th>2900</th>
      <td>2009-09-17</td>
      <td>Adelaide</td>
      <td>14.2</td>
      <td>17.4</td>
      <td>8.8</td>
      <td>2.0</td>
      <td>7.1</td>
      <td>SW</td>
      <td>41.0</td>
      <td>SSW</td>
      <td>...</td>
      <td>15.0</td>
      <td>20.0</td>
      <td>82.0</td>
      <td>56.0</td>
      <td>1014.9</td>
      <td>1018.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>16.2</td>
      <td>16.7</td>
    </tr>
    <tr>
      <th>902</th>
      <td>2008-12-10</td>
      <td>Adelaide</td>
      <td>14.2</td>
      <td>28.0</td>
      <td>0.0</td>
      <td>6.4</td>
      <td>12.5</td>
      <td>SE</td>
      <td>48.0</td>
      <td>E</td>
      <td>...</td>
      <td>13.0</td>
      <td>13.0</td>
      <td>56.0</td>
      <td>35.0</td>
      <td>1010.8</td>
      <td>1008.9</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>19.3</td>
      <td>25.6</td>
    </tr>
    <tr>
      <th>919</th>
      <td>2011-10-12</td>
      <td>Adelaide</td>
      <td>7.7</td>
      <td>19.9</td>
      <td>0.0</td>
      <td>3.4</td>
      <td>11.4</td>
      <td>W</td>
      <td>30.0</td>
      <td>E</td>
      <td>...</td>
      <td>13.0</td>
      <td>15.0</td>
      <td>56.0</td>
      <td>43.0</td>
      <td>1021.2</td>
      <td>1018.1</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.1</td>
      <td>19.4</td>
    </tr>
    <tr>
      <th>936</th>
      <td>2014-03-11</td>
      <td>Adelaide</td>
      <td>22.3</td>
      <td>32.2</td>
      <td>0.4</td>
      <td>20.6</td>
      <td>3.2</td>
      <td>W</td>
      <td>65.0</td>
      <td>ESE</td>
      <td>...</td>
      <td>9.0</td>
      <td>9.0</td>
      <td>53.0</td>
      <td>78.0</td>
      <td>1017.0</td>
      <td>1017.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>25.6</td>
      <td>22.8</td>
    </tr>
    <tr>
      <th>942</th>
      <td>2015-02-23</td>
      <td>Adelaide</td>
      <td>20.6</td>
      <td>26.5</td>
      <td>0.0</td>
      <td>16.2</td>
      <td>NaN</td>
      <td>SSE</td>
      <td>48.0</td>
      <td>S</td>
      <td>...</td>
      <td>20.0</td>
      <td>22.0</td>
      <td>61.0</td>
      <td>43.0</td>
      <td>1015.3</td>
      <td>1016.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>22.2</td>
      <td>25.7</td>
    </tr>
    <tr>
      <th>999</th>
      <td>2009-11-30</td>
      <td>Adelaide</td>
      <td>13.1</td>
      <td>22.4</td>
      <td>0.6</td>
      <td>13.6</td>
      <td>10.4</td>
      <td>SSE</td>
      <td>37.0</td>
      <td>SSE</td>
      <td>...</td>
      <td>17.0</td>
      <td>15.0</td>
      <td>66.0</td>
      <td>43.0</td>
      <td>1017.9</td>
      <td>1016.8</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>16.1</td>
      <td>20.9</td>
    </tr>
    <tr>
      <th>1013</th>
      <td>2012-08-23</td>
      <td>Adelaide</td>
      <td>8.1</td>
      <td>12.4</td>
      <td>6.0</td>
      <td>1.8</td>
      <td>NaN</td>
      <td>WNW</td>
      <td>74.0</td>
      <td>NW</td>
      <td>...</td>
      <td>26.0</td>
      <td>37.0</td>
      <td>74.0</td>
      <td>78.0</td>
      <td>1002.6</td>
      <td>1005.6</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>10.7</td>
      <td>7.4</td>
    </tr>
    <tr>
      <th>1042</th>
      <td>2008-11-03</td>
      <td>Adelaide</td>
      <td>13.3</td>
      <td>21.2</td>
      <td>0.0</td>
      <td>15.2</td>
      <td>10.0</td>
      <td>SSE</td>
      <td>39.0</td>
      <td>SSW</td>
      <td>...</td>
      <td>15.0</td>
      <td>20.0</td>
      <td>50.0</td>
      <td>39.0</td>
      <td>1021.9</td>
      <td>1020.1</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.8</td>
      <td>19.9</td>
    </tr>
    <tr>
      <th>701</th>
      <td>2009-01-08</td>
      <td>Adelaide</td>
      <td>14.3</td>
      <td>23.8</td>
      <td>0.0</td>
      <td>7.4</td>
      <td>12.7</td>
      <td>SE</td>
      <td>37.0</td>
      <td>SE</td>
      <td>...</td>
      <td>17.0</td>
      <td>22.0</td>
      <td>45.0</td>
      <td>30.0</td>
      <td>1019.9</td>
      <td>1019.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>17.6</td>
      <td>23.2</td>
    </tr>
    <tr>
      <th>109</th>
      <td>2012-05-02</td>
      <td>Adelaide</td>
      <td>9.4</td>
      <td>16.5</td>
      <td>12.4</td>
      <td>0.8</td>
      <td>NaN</td>
      <td>SSE</td>
      <td>39.0</td>
      <td>S</td>
      <td>...</td>
      <td>9.0</td>
      <td>15.0</td>
      <td>53.0</td>
      <td>47.0</td>
      <td>1029.6</td>
      <td>1028.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>13.5</td>
      <td>14.6</td>
    </tr>
    <tr>
      <th>227</th>
      <td>2016-08-31</td>
      <td>Adelaide</td>
      <td>11.9</td>
      <td>16.8</td>
      <td>1.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SW</td>
      <td>28.0</td>
      <td>WNW</td>
      <td>...</td>
      <td>11.0</td>
      <td>13.0</td>
      <td>80.0</td>
      <td>79.0</td>
      <td>1018.5</td>
      <td>1017.7</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.3</td>
      <td>15.2</td>
    </tr>
    <tr>
      <th>1190</th>
      <td>2015-07-01</td>
      <td>Adelaide</td>
      <td>4.7</td>
      <td>14.5</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>WSW</td>
      <td>20.0</td>
      <td>NE</td>
      <td>...</td>
      <td>6.0</td>
      <td>13.0</td>
      <td>78.0</td>
      <td>48.0</td>
      <td>1030.6</td>
      <td>1027.6</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>8.8</td>
      <td>13.1</td>
    </tr>
    <tr>
      <th>2701</th>
      <td>2013-05-16</td>
      <td>Adelaide</td>
      <td>10.7</td>
      <td>17.5</td>
      <td>7.0</td>
      <td>1.4</td>
      <td>7.1</td>
      <td>SW</td>
      <td>35.0</td>
      <td>NE</td>
      <td>...</td>
      <td>6.0</td>
      <td>19.0</td>
      <td>88.0</td>
      <td>54.0</td>
      <td>1016.3</td>
      <td>1015.9</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>13.1</td>
      <td>16.9</td>
    </tr>
    <tr>
      <th>1227</th>
      <td>2016-06-22</td>
      <td>Adelaide</td>
      <td>10.2</td>
      <td>16.5</td>
      <td>11.8</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>WNW</td>
      <td>39.0</td>
      <td>W</td>
      <td>...</td>
      <td>9.0</td>
      <td>17.0</td>
      <td>67.0</td>
      <td>63.0</td>
      <td>1010.3</td>
      <td>1010.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>13.5</td>
      <td>15.5</td>
    </tr>
    <tr>
      <th>1234</th>
      <td>2017-01-09</td>
      <td>Adelaide</td>
      <td>20.2</td>
      <td>30.4</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SW</td>
      <td>24.0</td>
      <td>ESE</td>
      <td>...</td>
      <td>6.0</td>
      <td>9.0</td>
      <td>70.0</td>
      <td>38.0</td>
      <td>1012.7</td>
      <td>1011.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>20.9</td>
      <td>28.9</td>
    </tr>
    <tr>
      <th>1266</th>
      <td>2008-11-07</td>
      <td>Adelaide</td>
      <td>18.3</td>
      <td>22.5</td>
      <td>0.2</td>
      <td>8.0</td>
      <td>1.4</td>
      <td>WNW</td>
      <td>56.0</td>
      <td>N</td>
      <td>...</td>
      <td>17.0</td>
      <td>28.0</td>
      <td>58.0</td>
      <td>51.0</td>
      <td>1001.0</td>
      <td>1004.7</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>22.4</td>
      <td>18.4</td>
    </tr>
    <tr>
      <th>1282</th>
      <td>2012-09-03</td>
      <td>Adelaide</td>
      <td>7.7</td>
      <td>22.9</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>NaN</td>
      <td>SE</td>
      <td>56.0</td>
      <td>N</td>
      <td>...</td>
      <td>13.0</td>
      <td>17.0</td>
      <td>27.0</td>
      <td>22.0</td>
      <td>1021.1</td>
      <td>1018.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>17.5</td>
      <td>22.1</td>
    </tr>
    <tr>
      <th>1289</th>
      <td>2010-03-09</td>
      <td>Adelaide</td>
      <td>14.3</td>
      <td>22.0</td>
      <td>1.6</td>
      <td>16.4</td>
      <td>7.8</td>
      <td>SW</td>
      <td>39.0</td>
      <td>S</td>
      <td>...</td>
      <td>11.0</td>
      <td>20.0</td>
      <td>75.0</td>
      <td>36.0</td>
      <td>1021.2</td>
      <td>1022.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>16.8</td>
      <td>21.6</td>
    </tr>
    <tr>
      <th>86</th>
      <td>2010-11-08</td>
      <td>Adelaide</td>
      <td>13.7</td>
      <td>23.1</td>
      <td>0.0</td>
      <td>16.0</td>
      <td>12.2</td>
      <td>W</td>
      <td>31.0</td>
      <td>WNW</td>
      <td>...</td>
      <td>13.0</td>
      <td>17.0</td>
      <td>61.0</td>
      <td>38.0</td>
      <td>1016.0</td>
      <td>1016.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>17.2</td>
      <td>22.5</td>
    </tr>
    <tr>
      <th>83</th>
      <td>2012-10-08</td>
      <td>Adelaide</td>
      <td>10.2</td>
      <td>23.6</td>
      <td>0.2</td>
      <td>10.0</td>
      <td>NaN</td>
      <td>E</td>
      <td>33.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>11.0</td>
      <td>17.0</td>
      <td>46.0</td>
      <td>28.0</td>
      <td>1016.7</td>
      <td>1012.9</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>15.1</td>
      <td>22.6</td>
    </tr>
    <tr>
      <th>1356</th>
      <td>2014-03-05</td>
      <td>Adelaide</td>
      <td>16.7</td>
      <td>24.8</td>
      <td>0.0</td>
      <td>6.6</td>
      <td>11.7</td>
      <td>S</td>
      <td>37.0</td>
      <td>S</td>
      <td>...</td>
      <td>15.0</td>
      <td>24.0</td>
      <td>61.0</td>
      <td>48.0</td>
      <td>1019.3</td>
      <td>1018.9</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>20.8</td>
      <td>23.7</td>
    </tr>
    <tr>
      <th>1390</th>
      <td>2015-10-04</td>
      <td>Adelaide</td>
      <td>15.4</td>
      <td>29.7</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>WNW</td>
      <td>20.0</td>
      <td>NaN</td>
      <td>...</td>
      <td>0.0</td>
      <td>9.0</td>
      <td>44.0</td>
      <td>22.0</td>
      <td>1024.0</td>
      <td>1022.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>18.3</td>
      <td>27.4</td>
    </tr>
    <tr>
      <th>107</th>
      <td>2015-10-01</td>
      <td>Adelaide</td>
      <td>7.8</td>
      <td>24.4</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>WSW</td>
      <td>22.0</td>
      <td>N</td>
      <td>...</td>
      <td>9.0</td>
      <td>15.0</td>
      <td>35.0</td>
      <td>23.0</td>
      <td>1028.4</td>
      <td>1028.6</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>19.1</td>
      <td>23.8</td>
    </tr>
    <tr>
      <th>3403</th>
      <td>2015-12-05</td>
      <td>Adelaide</td>
      <td>20.7</td>
      <td>40.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SE</td>
      <td>31.0</td>
      <td>NE</td>
      <td>...</td>
      <td>9.0</td>
      <td>13.0</td>
      <td>18.0</td>
      <td>13.0</td>
      <td>1015.3</td>
      <td>1012.1</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>33.4</td>
      <td>38.6</td>
    </tr>
    <tr>
      <th>3023</th>
      <td>2012-11-06</td>
      <td>Adelaide</td>
      <td>14.7</td>
      <td>22.8</td>
      <td>8.0</td>
      <td>3.2</td>
      <td>NaN</td>
      <td>NW</td>
      <td>31.0</td>
      <td>W</td>
      <td>...</td>
      <td>17.0</td>
      <td>15.0</td>
      <td>64.0</td>
      <td>46.0</td>
      <td>1011.9</td>
      <td>1011.6</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>17.7</td>
      <td>21.0</td>
    </tr>
    <tr>
      <th>...</th>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <th>179</th>
      <td>2015-12-20</td>
      <td>Woomera</td>
      <td>27.1</td>
      <td>31.3</td>
      <td>0.4</td>
      <td>18.0</td>
      <td>2.1</td>
      <td>SE</td>
      <td>56.0</td>
      <td>ENE</td>
      <td>...</td>
      <td>11.0</td>
      <td>35.0</td>
      <td>37.0</td>
      <td>41.0</td>
      <td>1007.7</td>
      <td>1007.7</td>
      <td>1.0</td>
      <td>NaN</td>
      <td>30.4</td>
      <td>29.7</td>
    </tr>
    <tr>
      <th>212</th>
      <td>2009-06-25</td>
      <td>Woomera</td>
      <td>9.1</td>
      <td>18.4</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>4.4</td>
      <td>N</td>
      <td>41.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>19.0</td>
      <td>20.0</td>
      <td>54.0</td>
      <td>90.0</td>
      <td>1012.9</td>
      <td>1008.8</td>
      <td>6.0</td>
      <td>8.0</td>
      <td>13.2</td>
      <td>14.2</td>
    </tr>
    <tr>
      <th>1392</th>
      <td>2015-11-06</td>
      <td>Woomera</td>
      <td>13.1</td>
      <td>28.3</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SE</td>
      <td>33.0</td>
      <td>SSE</td>
      <td>...</td>
      <td>19.0</td>
      <td>7.0</td>
      <td>65.0</td>
      <td>36.0</td>
      <td>1015.9</td>
      <td>1013.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>17.6</td>
      <td>26.0</td>
    </tr>
    <tr>
      <th>1436</th>
      <td>2009-10-19</td>
      <td>Woomera</td>
      <td>12.6</td>
      <td>30.0</td>
      <td>0.0</td>
      <td>7.8</td>
      <td>12.3</td>
      <td>N</td>
      <td>44.0</td>
      <td>N</td>
      <td>...</td>
      <td>13.0</td>
      <td>22.0</td>
      <td>20.0</td>
      <td>8.0</td>
      <td>1025.5</td>
      <td>1021.3</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>19.9</td>
      <td>28.7</td>
    </tr>
    <tr>
      <th>1431</th>
      <td>2012-01-16</td>
      <td>Woomera</td>
      <td>18.9</td>
      <td>38.8</td>
      <td>0.0</td>
      <td>12.0</td>
      <td>12.4</td>
      <td>N</td>
      <td>41.0</td>
      <td>ENE</td>
      <td>...</td>
      <td>20.0</td>
      <td>20.0</td>
      <td>10.0</td>
      <td>5.0</td>
      <td>1012.0</td>
      <td>1008.7</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>27.6</td>
      <td>37.9</td>
    </tr>
    <tr>
      <th>204</th>
      <td>2014-02-05</td>
      <td>Woomera</td>
      <td>23.1</td>
      <td>38.6</td>
      <td>0.0</td>
      <td>19.8</td>
      <td>6.3</td>
      <td>SE</td>
      <td>37.0</td>
      <td>ESE</td>
      <td>...</td>
      <td>17.0</td>
      <td>6.0</td>
      <td>18.0</td>
      <td>11.0</td>
      <td>1012.1</td>
      <td>1009.9</td>
      <td>3.0</td>
      <td>2.0</td>
      <td>26.8</td>
      <td>36.2</td>
    </tr>
    <tr>
      <th>225</th>
      <td>2013-08-23</td>
      <td>Woomera</td>
      <td>6.5</td>
      <td>17.7</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>3.6</td>
      <td>SW</td>
      <td>43.0</td>
      <td>WSW</td>
      <td>...</td>
      <td>22.0</td>
      <td>26.0</td>
      <td>76.0</td>
      <td>46.0</td>
      <td>1024.2</td>
      <td>1022.9</td>
      <td>1.0</td>
      <td>7.0</td>
      <td>13.2</td>
      <td>17.3</td>
    </tr>
    <tr>
      <th>400</th>
      <td>2016-02-09</td>
      <td>Woomera</td>
      <td>20.2</td>
      <td>39.4</td>
      <td>0.0</td>
      <td>17.6</td>
      <td>12.8</td>
      <td>SSE</td>
      <td>43.0</td>
      <td>SE</td>
      <td>...</td>
      <td>24.0</td>
      <td>9.0</td>
      <td>50.0</td>
      <td>12.0</td>
      <td>1016.8</td>
      <td>1013.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>24.0</td>
      <td>37.7</td>
    </tr>
    <tr>
      <th>1174</th>
      <td>2011-07-27</td>
      <td>Woomera</td>
      <td>4.9</td>
      <td>20.9</td>
      <td>0.0</td>
      <td>3.2</td>
      <td>10.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>...</td>
      <td>0.0</td>
      <td>11.0</td>
      <td>54.0</td>
      <td>29.0</td>
      <td>1026.8</td>
      <td>1024.0</td>
      <td>2.0</td>
      <td>0.0</td>
      <td>11.7</td>
      <td>20.3</td>
    </tr>
    <tr>
      <th>3413</th>
      <td>2009-03-27</td>
      <td>Woomera</td>
      <td>15.2</td>
      <td>30.0</td>
      <td>0.0</td>
      <td>8.5</td>
      <td>11.2</td>
      <td>SSE</td>
      <td>43.0</td>
      <td>SSE</td>
      <td>...</td>
      <td>20.0</td>
      <td>17.0</td>
      <td>52.0</td>
      <td>20.0</td>
      <td>1024.9</td>
      <td>1021.6</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>16.9</td>
      <td>28.3</td>
    </tr>
    <tr>
      <th>396</th>
      <td>2013-01-01</td>
      <td>Woomera</td>
      <td>21.5</td>
      <td>40.4</td>
      <td>0.0</td>
      <td>42.2</td>
      <td>NaN</td>
      <td>SE</td>
      <td>54.0</td>
      <td>ESE</td>
      <td>...</td>
      <td>20.0</td>
      <td>26.0</td>
      <td>17.0</td>
      <td>3.0</td>
      <td>1014.5</td>
      <td>1012.1</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>28.1</td>
      <td>39.6</td>
    </tr>
    <tr>
      <th>2867</th>
      <td>2009-10-07</td>
      <td>Woomera</td>
      <td>9.0</td>
      <td>21.5</td>
      <td>0.0</td>
      <td>7.8</td>
      <td>11.9</td>
      <td>SE</td>
      <td>35.0</td>
      <td>SE</td>
      <td>...</td>
      <td>22.0</td>
      <td>15.0</td>
      <td>52.0</td>
      <td>20.0</td>
      <td>1025.6</td>
      <td>1024.3</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>12.4</td>
      <td>19.9</td>
    </tr>
    <tr>
      <th>1741</th>
      <td>2010-03-12</td>
      <td>Woomera</td>
      <td>14.0</td>
      <td>30.7</td>
      <td>0.0</td>
      <td>12.0</td>
      <td>11.4</td>
      <td>E</td>
      <td>37.0</td>
      <td>SE</td>
      <td>...</td>
      <td>20.0</td>
      <td>13.0</td>
      <td>42.0</td>
      <td>26.0</td>
      <td>1028.3</td>
      <td>1025.0</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>17.9</td>
      <td>28.9</td>
    </tr>
    <tr>
      <th>2380</th>
      <td>2013-01-15</td>
      <td>Woomera</td>
      <td>19.0</td>
      <td>36.3</td>
      <td>0.0</td>
      <td>13.0</td>
      <td>13.0</td>
      <td>ENE</td>
      <td>33.0</td>
      <td>E</td>
      <td>...</td>
      <td>24.0</td>
      <td>15.0</td>
      <td>17.0</td>
      <td>6.0</td>
      <td>1014.2</td>
      <td>NaN</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>25.6</td>
      <td>35.0</td>
    </tr>
    <tr>
      <th>975</th>
      <td>2015-02-26</td>
      <td>Woomera</td>
      <td>17.5</td>
      <td>36.5</td>
      <td>0.0</td>
      <td>15.0</td>
      <td>NaN</td>
      <td>SSE</td>
      <td>39.0</td>
      <td>SE</td>
      <td>...</td>
      <td>20.0</td>
      <td>20.0</td>
      <td>37.0</td>
      <td>6.0</td>
      <td>1011.3</td>
      <td>1008.5</td>
      <td>1.0</td>
      <td>0.0</td>
      <td>23.1</td>
      <td>34.7</td>
    </tr>
    <tr>
      <th>1716</th>
      <td>2016-12-19</td>
      <td>Woomera</td>
      <td>18.9</td>
      <td>33.0</td>
      <td>0.0</td>
      <td>10.8</td>
      <td>NaN</td>
      <td>WSW</td>
      <td>46.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>26.0</td>
      <td>24.0</td>
      <td>20.0</td>
      <td>32.0</td>
      <td>1012.1</td>
      <td>1009.8</td>
      <td>5.0</td>
      <td>7.0</td>
      <td>27.2</td>
      <td>29.7</td>
    </tr>
    <tr>
      <th>2569</th>
      <td>2009-08-06</td>
      <td>Woomera</td>
      <td>10.7</td>
      <td>25.1</td>
      <td>0.0</td>
      <td>9.6</td>
      <td>10.4</td>
      <td>NNW</td>
      <td>57.0</td>
      <td>N</td>
      <td>...</td>
      <td>24.0</td>
      <td>37.0</td>
      <td>32.0</td>
      <td>12.0</td>
      <td>1017.6</td>
      <td>1012.5</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>15.8</td>
      <td>24.5</td>
    </tr>
    <tr>
      <th>355</th>
      <td>2013-06-23</td>
      <td>Woomera</td>
      <td>7.8</td>
      <td>16.0</td>
      <td>1.2</td>
      <td>3.2</td>
      <td>7.4</td>
      <td>W</td>
      <td>37.0</td>
      <td>WNW</td>
      <td>...</td>
      <td>19.0</td>
      <td>26.0</td>
      <td>97.0</td>
      <td>54.0</td>
      <td>1020.9</td>
      <td>1019.4</td>
      <td>5.0</td>
      <td>6.0</td>
      <td>9.7</td>
      <td>15.6</td>
    </tr>
    <tr>
      <th>592</th>
      <td>2013-04-03</td>
      <td>Woomera</td>
      <td>15.2</td>
      <td>26.9</td>
      <td>0.0</td>
      <td>6.8</td>
      <td>10.7</td>
      <td>SSE</td>
      <td>41.0</td>
      <td>SE</td>
      <td>...</td>
      <td>22.0</td>
      <td>13.0</td>
      <td>82.0</td>
      <td>33.0</td>
      <td>1023.3</td>
      <td>1021.0</td>
      <td>1.0</td>
      <td>4.0</td>
      <td>17.4</td>
      <td>26.2</td>
    </tr>
    <tr>
      <th>343</th>
      <td>2009-12-06</td>
      <td>Woomera</td>
      <td>16.1</td>
      <td>33.1</td>
      <td>0.0</td>
      <td>12.8</td>
      <td>13.1</td>
      <td>SSW</td>
      <td>39.0</td>
      <td>ESE</td>
      <td>...</td>
      <td>17.0</td>
      <td>17.0</td>
      <td>42.0</td>
      <td>12.0</td>
      <td>1016.7</td>
      <td>1013.4</td>
      <td>4.0</td>
      <td>6.0</td>
      <td>22.8</td>
      <td>32.1</td>
    </tr>
    <tr>
      <th>1994</th>
      <td>2015-06-06</td>
      <td>Woomera</td>
      <td>6.6</td>
      <td>20.2</td>
      <td>0.0</td>
      <td>6.6</td>
      <td>9.0</td>
      <td>NNE</td>
      <td>31.0</td>
      <td>NE</td>
      <td>...</td>
      <td>11.0</td>
      <td>17.0</td>
      <td>65.0</td>
      <td>39.0</td>
      <td>1030.1</td>
      <td>1026.3</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>12.7</td>
      <td>19.4</td>
    </tr>
    <tr>
      <th>2811</th>
      <td>2009-03-23</td>
      <td>Woomera</td>
      <td>13.4</td>
      <td>30.7</td>
      <td>0.0</td>
      <td>14.6</td>
      <td>10.8</td>
      <td>SSE</td>
      <td>35.0</td>
      <td>SE</td>
      <td>...</td>
      <td>26.0</td>
      <td>9.0</td>
      <td>48.0</td>
      <td>16.0</td>
      <td>1015.1</td>
      <td>1012.2</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>16.6</td>
      <td>28.6</td>
    </tr>
    <tr>
      <th>1629</th>
      <td>2010-07-17</td>
      <td>Woomera</td>
      <td>5.1</td>
      <td>17.0</td>
      <td>0.0</td>
      <td>2.0</td>
      <td>9.5</td>
      <td>N</td>
      <td>37.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>15.0</td>
      <td>15.0</td>
      <td>72.0</td>
      <td>43.0</td>
      <td>1026.4</td>
      <td>1022.4</td>
      <td>3.0</td>
      <td>4.0</td>
      <td>9.4</td>
      <td>15.8</td>
    </tr>
    <tr>
      <th>320</th>
      <td>2014-11-04</td>
      <td>Woomera</td>
      <td>17.4</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>12.0</td>
      <td>11.0</td>
      <td>S</td>
      <td>54.0</td>
      <td>WNW</td>
      <td>...</td>
      <td>13.0</td>
      <td>30.0</td>
      <td>5.0</td>
      <td>24.0</td>
      <td>1016.2</td>
      <td>1016.1</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>25.7</td>
      <td>28.1</td>
    </tr>
    <tr>
      <th>1072</th>
      <td>2016-12-04</td>
      <td>Woomera</td>
      <td>24.2</td>
      <td>38.7</td>
      <td>0.0</td>
      <td>10.6</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>80.0</td>
      <td>SSW</td>
      <td>...</td>
      <td>13.0</td>
      <td>24.0</td>
      <td>43.0</td>
      <td>23.0</td>
      <td>1008.4</td>
      <td>1004.5</td>
      <td>7.0</td>
      <td>3.0</td>
      <td>28.3</td>
      <td>36.4</td>
    </tr>
    <tr>
      <th>2223</th>
      <td>2009-05-08</td>
      <td>Woomera</td>
      <td>9.2</td>
      <td>20.6</td>
      <td>0.0</td>
      <td>5.2</td>
      <td>10.4</td>
      <td>ESE</td>
      <td>37.0</td>
      <td>SE</td>
      <td>...</td>
      <td>19.0</td>
      <td>19.0</td>
      <td>64.0</td>
      <td>34.0</td>
      <td>1030.5</td>
      <td>1026.9</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>13.7</td>
      <td>20.1</td>
    </tr>
    <tr>
      <th>1984</th>
      <td>2014-05-26</td>
      <td>Woomera</td>
      <td>15.5</td>
      <td>23.6</td>
      <td>0.0</td>
      <td>24.0</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>43.0</td>
      <td>NNE</td>
      <td>...</td>
      <td>9.0</td>
      <td>26.0</td>
      <td>49.0</td>
      <td>37.0</td>
      <td>1014.2</td>
      <td>1010.3</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>18.0</td>
      <td>21.5</td>
    </tr>
    <tr>
      <th>1592</th>
      <td>2012-01-10</td>
      <td>Woomera</td>
      <td>16.8</td>
      <td>26.7</td>
      <td>0.0</td>
      <td>10.0</td>
      <td>5.3</td>
      <td>SW</td>
      <td>46.0</td>
      <td>S</td>
      <td>...</td>
      <td>20.0</td>
      <td>22.0</td>
      <td>52.0</td>
      <td>33.0</td>
      <td>1019.1</td>
      <td>1016.8</td>
      <td>4.0</td>
      <td>6.0</td>
      <td>18.3</td>
      <td>24.9</td>
    </tr>
    <tr>
      <th>2824</th>
      <td>2015-11-03</td>
      <td>Woomera</td>
      <td>16.2</td>
      <td>28.5</td>
      <td>7.8</td>
      <td>4.2</td>
      <td>4.5</td>
      <td>WSW</td>
      <td>80.0</td>
      <td>NE</td>
      <td>...</td>
      <td>26.0</td>
      <td>50.0</td>
      <td>76.0</td>
      <td>53.0</td>
      <td>1009.6</td>
      <td>1006.8</td>
      <td>6.0</td>
      <td>7.0</td>
      <td>20.5</td>
      <td>26.2</td>
    </tr>
    <tr>
      <th>1005</th>
      <td>2010-05-14</td>
      <td>Woomera</td>
      <td>3.9</td>
      <td>19.3</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>10.5</td>
      <td>NE</td>
      <td>33.0</td>
      <td>ENE</td>
      <td>...</td>
      <td>15.0</td>
      <td>13.0</td>
      <td>43.0</td>
      <td>19.0</td>
      <td>1020.2</td>
      <td>1016.4</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>11.5</td>
      <td>18.5</td>
    </tr>
  </tbody>
</table>
<p>3500 rows × 21 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#不同地点上一段相似的时间的数据</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;2015-08-24&quot;</span><span class="p">,:]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed9am</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2015-08-24</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>17.0</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>2906</th>
      <td>2015-08-24</td>
      <td>Adelaide</td>
      <td>9.2</td>
      <td>14.3</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SE</td>
      <td>48.0</td>
      <td>SE</td>
      <td>...</td>
      <td>17.0</td>
      <td>19.0</td>
      <td>64.0</td>
      <td>42.0</td>
      <td>1024.7</td>
      <td>1024.1</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>9.9</td>
      <td>13.4</td>
    </tr>
  </tbody>
</table>
<p>2 rows × 21 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#首先，日期不是独一无二的，日期有重复</span>
<span class="c1">#其次，在我们分训练集和测试集之后，日期也不是连续的，而是分散的</span>
<span class="c1">#某一年的某一天倾向于会下雨？或者倾向于不会下雨吗？</span>
<span class="c1">#不是日期影响了下雨与否，反而更多的是这一天的日照时间，湿度，温度等等这些因素影响了是否会下雨</span>
<span class="c1">#光看日期，其实感觉它对我们的判断并无直接影响</span>
<span class="c1">#如果我们把它当作连续型变量处理，那算法会人为它是一系列1~3000左右的数字，不会意识到这是日期</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[25]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="c1">#如果我们把它当作分类型变量处理，类别太多，有2141类，如果换成数值型，会被直接当成连续型变量，如果做成哑变量，我们特征的维度会爆炸</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[25]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>2141</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[26]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[26]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0      0.0
1      0.0
2      0.0
3      0.0
4      0.0
5      0.0
6      0.0
7      0.2
8      0.0
9      0.2
10     1.0
11     0.0
12     0.2
13     0.0
14     0.0
15     3.0
16     0.2
17     0.0
18    35.2
19     0.0
Name: Rainfall, dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[27]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="c1">#假设你没有下雨</span>
<span class="c1">#复制你的空值</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[27]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>33</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[28]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">,</span><span class="s2">&quot;RainToday&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Yes&quot;</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">,</span><span class="s2">&quot;RainToday&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;No&quot;</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span><span class="s2">&quot;RainToday&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:357: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[key] = _infer_fill_value(value)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:537: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[item] = s
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2015-08-24</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2016-12-10</td>
      <td>Tuggeranong</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2010-04-18</td>
      <td>Albany</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2009-11-26</td>
      <td>Sale</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2014-04-25</td>
      <td>Mildura</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;RainToday&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>No     2642
Yes     825
Name: RainToday, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[29]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">,</span><span class="s2">&quot;RainToday&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Yes&quot;</span>
<span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">,</span><span class="s2">&quot;RainToday&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;No&quot;</span>
<span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Rainfall&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span><span class="s2">&quot;RainToday&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:357: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[key] = _infer_fill_value(value)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:537: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[item] = s
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2015-08-24</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2016-12-10</td>
      <td>Tuggeranong</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2010-04-18</td>
      <td>Albany</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2009-11-26</td>
      <td>Sale</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2014-04-25</td>
      <td>Mildura</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Date</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2016-01-23</td>
      <td>NorahHead</td>
      <td>22.0</td>
      <td>27.8</td>
      <td>25.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SSW</td>
      <td>57.0</td>
      <td>S</td>
      <td>...</td>
      <td>37.0</td>
      <td>91.0</td>
      <td>86.0</td>
      <td>1006.6</td>
      <td>1008.1</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>26.2</td>
      <td>23.1</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2009-03-05</td>
      <td>MountGambier</td>
      <td>12.0</td>
      <td>18.6</td>
      <td>2.2</td>
      <td>3.0</td>
      <td>7.8</td>
      <td>SW</td>
      <td>52.0</td>
      <td>SW</td>
      <td>...</td>
      <td>28.0</td>
      <td>88.0</td>
      <td>62.0</td>
      <td>1020.2</td>
      <td>1019.9</td>
      <td>8.0</td>
      <td>7.0</td>
      <td>14.8</td>
      <td>17.5</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2010-03-05</td>
      <td>MountGinini</td>
      <td>9.1</td>
      <td>13.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>41.0</td>
      <td>NaN</td>
      <td>...</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2013-10-26</td>
      <td>Wollongong</td>
      <td>13.1</td>
      <td>20.3</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SW</td>
      <td>33.0</td>
      <td>W</td>
      <td>...</td>
      <td>24.0</td>
      <td>40.0</td>
      <td>51.0</td>
      <td>1021.3</td>
      <td>1019.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>16.8</td>
      <td>19.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2016-11-28</td>
      <td>Sale</td>
      <td>12.2</td>
      <td>20.0</td>
      <td>0.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>E</td>
      <td>33.0</td>
      <td>SW</td>
      <td>...</td>
      <td>19.0</td>
      <td>92.0</td>
      <td>69.0</td>
      <td>1015.6</td>
      <td>1013.2</td>
      <td>8.0</td>
      <td>4.0</td>
      <td>13.6</td>
      <td>19.0</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[30]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;Date&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[30]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;2015&#39;, &#39;08&#39;, &#39;24&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">int</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;Date&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span> <span class="c1">#提取出月份</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[0]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>8</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[31]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Date&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Date&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]))</span>
<span class="c1">#apply是对dataframe上的某一列进行处理的一个函数</span>
<span class="c1">#lambda x匿名函数，请在dataframe上这一列中的每一行帮我执行冒号后的命令</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  &#34;&#34;&#34;Entry point for launching an IPython kernel.
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[32]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Date&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[32]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>3     334
5     324
7     316
9     302
6     302
1     300
11    299
10    282
4     265
2     264
12    259
8     253
Name: Date, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#替换完毕后，我们需要修改列的名称</span>
<span class="c1">#rename是比较少用的，可以用来修改单个列名的函数</span>
<span class="c1">#我们通常都直接使用 df.columns = 某个列表 这样的形式来一次修改所有的列名</span>
<span class="c1">#但rename允许我们只修改某个单独的列</span>
<span class="n">Xtrain</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;Date&quot;</span><span class="p">:</span><span class="s2">&quot;Month&quot;</span><span class="p">})</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[34]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[34]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>8</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>12</td>
      <td>Tuggeranong</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4</td>
      <td>Albany</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11</td>
      <td>Sale</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4</td>
      <td>Mildura</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[35]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Date&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Date&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]))</span>
<span class="n">Xtest</span> <span class="o">=</span> <span class="n">Xtest</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;Date&quot;</span><span class="p">:</span><span class="s2">&quot;Month&quot;</span><span class="p">})</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  &#34;&#34;&#34;Entry point for launching an IPython kernel.
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[36]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[36]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>NorahHead</td>
      <td>22.0</td>
      <td>27.8</td>
      <td>25.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SSW</td>
      <td>57.0</td>
      <td>S</td>
      <td>...</td>
      <td>37.0</td>
      <td>91.0</td>
      <td>86.0</td>
      <td>1006.6</td>
      <td>1008.1</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>26.2</td>
      <td>23.1</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>1</th>
      <td>3</td>
      <td>MountGambier</td>
      <td>12.0</td>
      <td>18.6</td>
      <td>2.2</td>
      <td>3.0</td>
      <td>7.8</td>
      <td>SW</td>
      <td>52.0</td>
      <td>SW</td>
      <td>...</td>
      <td>28.0</td>
      <td>88.0</td>
      <td>62.0</td>
      <td>1020.2</td>
      <td>1019.9</td>
      <td>8.0</td>
      <td>7.0</td>
      <td>14.8</td>
      <td>17.5</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>2</th>
      <td>3</td>
      <td>MountGinini</td>
      <td>9.1</td>
      <td>13.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>41.0</td>
      <td>NaN</td>
      <td>...</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>3</th>
      <td>10</td>
      <td>Wollongong</td>
      <td>13.1</td>
      <td>20.3</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SW</td>
      <td>33.0</td>
      <td>W</td>
      <td>...</td>
      <td>24.0</td>
      <td>40.0</td>
      <td>51.0</td>
      <td>1021.3</td>
      <td>1019.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>16.8</td>
      <td>19.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>11</td>
      <td>Sale</td>
      <td>12.2</td>
      <td>20.0</td>
      <td>0.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>E</td>
      <td>33.0</td>
      <td>SW</td>
      <td>...</td>
      <td>19.0</td>
      <td>92.0</td>
      <td>69.0</td>
      <td>1015.6</td>
      <td>1013.2</td>
      <td>8.0</td>
      <td>4.0</td>
      <td>13.6</td>
      <td>19.0</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="3&#22788;&#29702;&#22256;&#38590;&#29305;&#24449;&#65306;&#22320;&#28857;">3&#22788;&#29702;&#22256;&#38590;&#29305;&#24449;&#65306;&#22320;&#28857;<a class="anchor-link" href="#3&#22788;&#29702;&#22256;&#38590;&#29305;&#24449;&#65306;&#22320;&#28857;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[37]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="c1">#超过25个类别的分类型变量，都会被算法当成是连续型变量</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[37]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>49</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">citynames</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cityll</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;cityll.csv&quot;</span><span class="p">,</span><span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">city_climate</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;Cityclimate.csv&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[40]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cityll</span><span class="o">.</span><span class="n">head</span><span class="p">()</span> <span class="c1">#每个城市对应的经纬度，这些城市是澳大利亚统计局做的那张地图上的城市</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[40]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>Latitude</th>
      <th>Longitude</th>
      <th>Latitudedir</th>
      <th>Longitudedir</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Adelaide</td>
      <td>34.9285°</td>
      <td>138.6007°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Albany</td>
      <td>35.0275°</td>
      <td>117.8840°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Albury</td>
      <td>36.0737°</td>
      <td>146.9135°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Wodonga</td>
      <td>36.1241°</td>
      <td>146.8818°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>4</th>
      <td>AliceSprings</td>
      <td>23.6980°</td>
      <td>133.8807°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[41]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">float</span><span class="p">(</span><span class="n">cityll</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;Latitude&quot;</span><span class="p">][:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[41]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>34.9285</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[42]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cityll</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;Latitudedir&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[42]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>S,    100
Name: Latitudedir, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[43]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">city_climate</span><span class="o">.</span><span class="n">head</span><span class="p">()</span> <span class="c1">#澳大利亚统计局做的每个城市对应的气候</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[43]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>Climate</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Adelaide</td>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Albany</td>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Albury</td>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Wodonga</td>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>4</th>
      <td>AliceSprings</td>
      <td>Hot dry summer, warm winter</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#去掉度数符号</span>
<span class="n">cityll</span><span class="p">[</span><span class="s2">&quot;Latitudenum&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">cityll</span><span class="p">[</span><span class="s2">&quot;Latitude&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
<span class="n">cityll</span><span class="p">[</span><span class="s2">&quot;Longitudenum&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">cityll</span><span class="p">[</span><span class="s2">&quot;Longitude&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#观察一下所有的经纬度方向都是一致的，全部是南纬，东经，因为澳大利亚在南半球，东半球</span>
<span class="c1">#所以经纬度的方向我们可以舍弃了</span>
<span class="n">citylld</span> <span class="o">=</span> <span class="n">cityll</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,[</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">]]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[46]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">citylld</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[46]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>Latitudenum</th>
      <th>Longitudenum</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Adelaide</td>
      <td>34.9285</td>
      <td>138.6007</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Albany</td>
      <td>35.0275</td>
      <td>117.8840</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Albury</td>
      <td>36.0737</td>
      <td>146.9135</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Wodonga</td>
      <td>36.1241</td>
      <td>146.8818</td>
    </tr>
    <tr>
      <th>4</th>
      <td>AliceSprings</td>
      <td>23.6980</td>
      <td>133.8807</td>
    </tr>
    <tr>
      <th>5</th>
      <td>Amata</td>
      <td>26.1509</td>
      <td>131.1467</td>
    </tr>
    <tr>
      <th>6</th>
      <td>Ballarat</td>
      <td>37.5622</td>
      <td>143.8503</td>
    </tr>
    <tr>
      <th>7</th>
      <td>Bathurst</td>
      <td>33.4193</td>
      <td>149.5775</td>
    </tr>
    <tr>
      <th>8</th>
      <td>Birdsville</td>
      <td>25.8989</td>
      <td>139.3517</td>
    </tr>
    <tr>
      <th>9</th>
      <td>Borroloola</td>
      <td>16.0703</td>
      <td>136.3072</td>
    </tr>
    <tr>
      <th>10</th>
      <td>Bourke</td>
      <td>30.0907</td>
      <td>145.9382</td>
    </tr>
    <tr>
      <th>11</th>
      <td>Brisbane</td>
      <td>27.4698</td>
      <td>153.0251</td>
    </tr>
    <tr>
      <th>12</th>
      <td>BrokenHill</td>
      <td>31.9539</td>
      <td>141.4539</td>
    </tr>
    <tr>
      <th>13</th>
      <td>Broome</td>
      <td>17.9614</td>
      <td>122.2359</td>
    </tr>
    <tr>
      <th>14</th>
      <td>Bunbury</td>
      <td>33.3256</td>
      <td>115.6396</td>
    </tr>
    <tr>
      <th>15</th>
      <td>Burketown</td>
      <td>17.8522</td>
      <td>139.6332</td>
    </tr>
    <tr>
      <th>16</th>
      <td>Burra</td>
      <td>33.6800</td>
      <td>138.9363</td>
    </tr>
    <tr>
      <th>17</th>
      <td>Cairns</td>
      <td>16.9186</td>
      <td>145.7781</td>
    </tr>
    <tr>
      <th>18</th>
      <td>Canberra</td>
      <td>35.2809</td>
      <td>149.1300</td>
    </tr>
    <tr>
      <th>19</th>
      <td>Carnarvon</td>
      <td>24.8840</td>
      <td>113.6610</td>
    </tr>
    <tr>
      <th>20</th>
      <td>Ceduna</td>
      <td>32.1306</td>
      <td>133.6817</td>
    </tr>
    <tr>
      <th>21</th>
      <td>Charleville</td>
      <td>26.4021</td>
      <td>146.2454</td>
    </tr>
    <tr>
      <th>22</th>
      <td>CooberPedy</td>
      <td>29.0139</td>
      <td>134.7533</td>
    </tr>
    <tr>
      <th>23</th>
      <td>Cooktown</td>
      <td>15.4758</td>
      <td>145.2471</td>
    </tr>
    <tr>
      <th>24</th>
      <td>CoffsHarbour</td>
      <td>30.2986</td>
      <td>153.1094</td>
    </tr>
    <tr>
      <th>25</th>
      <td>Dampier</td>
      <td>20.6582</td>
      <td>116.7151</td>
    </tr>
    <tr>
      <th>26</th>
      <td>Darwin</td>
      <td>12.4634</td>
      <td>130.8456</td>
    </tr>
    <tr>
      <th>27</th>
      <td>Derby</td>
      <td>17.3179</td>
      <td>123.6490</td>
    </tr>
    <tr>
      <th>28</th>
      <td>Devonport</td>
      <td>41.1771</td>
      <td>146.3452</td>
    </tr>
    <tr>
      <th>29</th>
      <td>Dubbo</td>
      <td>32.2315</td>
      <td>148.6330</td>
    </tr>
    <tr>
      <th>...</th>
      <td>...</td>
      <td>...</td>
      <td>...</td>
    </tr>
    <tr>
      <th>70</th>
      <td>Perth</td>
      <td>31.9505</td>
      <td>115.8605</td>
    </tr>
    <tr>
      <th>71</th>
      <td>PerthAirport</td>
      <td>31.9440</td>
      <td>115.9680</td>
    </tr>
    <tr>
      <th>72</th>
      <td>PortHedland</td>
      <td>20.3107</td>
      <td>118.5878</td>
    </tr>
    <tr>
      <th>73</th>
      <td>PortLincoln</td>
      <td>34.7240</td>
      <td>135.8611</td>
    </tr>
    <tr>
      <th>74</th>
      <td>PortMacquarie</td>
      <td>31.4333</td>
      <td>152.9000</td>
    </tr>
    <tr>
      <th>75</th>
      <td>Renmark</td>
      <td>34.1743</td>
      <td>140.7443</td>
    </tr>
    <tr>
      <th>76</th>
      <td>Rockhampton</td>
      <td>23.3791</td>
      <td>150.5100</td>
    </tr>
    <tr>
      <th>77</th>
      <td>Shepparton</td>
      <td>36.3833</td>
      <td>145.4000</td>
    </tr>
    <tr>
      <th>78</th>
      <td>Southport</td>
      <td>27.9738</td>
      <td>153.4183</td>
    </tr>
    <tr>
      <th>79</th>
      <td>Strahan</td>
      <td>42.1500</td>
      <td>145.3167</td>
    </tr>
    <tr>
      <th>80</th>
      <td>Swansea</td>
      <td>33.0850</td>
      <td>151.6350</td>
    </tr>
    <tr>
      <th>81</th>
      <td>Sydney</td>
      <td>33.8688</td>
      <td>151.2093</td>
    </tr>
    <tr>
      <th>82</th>
      <td>SydneyAirport</td>
      <td>33.9399</td>
      <td>151.1753</td>
    </tr>
    <tr>
      <th>83</th>
      <td>Tamworth</td>
      <td>31.0927</td>
      <td>150.9320</td>
    </tr>
    <tr>
      <th>84</th>
      <td>Taroom</td>
      <td>25.6406</td>
      <td>149.7983</td>
    </tr>
    <tr>
      <th>85</th>
      <td>Telfer</td>
      <td>21.6924</td>
      <td>122.1478</td>
    </tr>
    <tr>
      <th>86</th>
      <td>TennantCreek</td>
      <td>19.6484</td>
      <td>134.1900</td>
    </tr>
    <tr>
      <th>87</th>
      <td>Thargomindah</td>
      <td>27.9944</td>
      <td>143.8229</td>
    </tr>
    <tr>
      <th>88</th>
      <td>Tibooburra</td>
      <td>29.4331</td>
      <td>142.0108</td>
    </tr>
    <tr>
      <th>89</th>
      <td>TimberCreek</td>
      <td>15.6432</td>
      <td>130.4666</td>
    </tr>
    <tr>
      <th>90</th>
      <td>Townsville</td>
      <td>19.2590</td>
      <td>146.8169</td>
    </tr>
    <tr>
      <th>91</th>
      <td>Warburton</td>
      <td>26.1353</td>
      <td>126.5783</td>
    </tr>
    <tr>
      <th>92</th>
      <td>Weipa</td>
      <td>12.6493</td>
      <td>141.8470</td>
    </tr>
    <tr>
      <th>93</th>
      <td>Whyalla</td>
      <td>33.0380</td>
      <td>137.5753</td>
    </tr>
    <tr>
      <th>94</th>
      <td>Wiluna</td>
      <td>26.5950</td>
      <td>120.2250</td>
    </tr>
    <tr>
      <th>95</th>
      <td>Wollongong</td>
      <td>34.4278</td>
      <td>150.8931</td>
    </tr>
    <tr>
      <th>96</th>
      <td>Wyndham</td>
      <td>15.4825</td>
      <td>128.1228</td>
    </tr>
    <tr>
      <th>97</th>
      <td>Yalgoo</td>
      <td>28.3445</td>
      <td>116.6851</td>
    </tr>
    <tr>
      <th>98</th>
      <td>Yulara</td>
      <td>25.2335</td>
      <td>130.9849</td>
    </tr>
    <tr>
      <th>99</th>
      <td>Uluru</td>
      <td>25.3444</td>
      <td>131.0369</td>
    </tr>
  </tbody>
</table>
<p>100 rows × 3 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[47]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#将city_climate中的气候添加到我们的citylld中</span>
<span class="n">citylld</span><span class="p">[</span><span class="s2">&quot;climate&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">city_climate</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  &#34;&#34;&#34;Entry point for launching an IPython kernel.
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[48]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">citylld</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[48]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>Latitudenum</th>
      <th>Longitudenum</th>
      <th>climate</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Adelaide</td>
      <td>34.9285</td>
      <td>138.6007</td>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Albany</td>
      <td>35.0275</td>
      <td>117.8840</td>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Albury</td>
      <td>36.0737</td>
      <td>146.9135</td>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Wodonga</td>
      <td>36.1241</td>
      <td>146.8818</td>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>4</th>
      <td>AliceSprings</td>
      <td>23.6980</td>
      <td>133.8807</td>
      <td>Hot dry summer, warm winter</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[49]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">citylld</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;climate&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[49]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Hot dry summer, cool winter          24
Warm temperate                       18
Hot dry summer, warm winter          18
High humidity summer, warm winter    17
Cool temperate                        9
Mild temperate                        9
Warm humid summer, mild winter        5
Name: climate, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">samplecity</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;samplecity.csv&quot;</span><span class="p">,</span><span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[51]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">samplecity</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[51]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>Latitude</th>
      <th>Longitude</th>
      <th>Latitudedir</th>
      <th>Longitudedir</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Canberra</td>
      <td>35.2809°</td>
      <td>149.1300°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Sydney</td>
      <td>33.8688°</td>
      <td>151.2093°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Perth</td>
      <td>31.9505°</td>
      <td>115.8605°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Darwin</td>
      <td>12.4634°</td>
      <td>130.8456°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
    <tr>
      <th>4</th>
      <td>Hobart</td>
      <td>42.8821°</td>
      <td>147.3272°</td>
      <td>S,</td>
      <td>E</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#我们对samplecity也执行同样的处理：去掉经纬度中度数的符号，并且舍弃我们的经纬度的方向</span>
<span class="n">samplecity</span><span class="p">[</span><span class="s2">&quot;Latitudenum&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">samplecity</span><span class="p">[</span><span class="s2">&quot;Latitude&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
<span class="n">samplecity</span><span class="p">[</span><span class="s2">&quot;Longitudenum&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">samplecity</span><span class="p">[</span><span class="s2">&quot;Longitude&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="nb">float</span><span class="p">(</span><span class="n">x</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
<span class="n">samplecityd</span> <span class="o">=</span> <span class="n">samplecity</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,[</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">]]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[53]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">samplecityd</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[53]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>Latitudenum</th>
      <th>Longitudenum</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Canberra</td>
      <td>35.2809</td>
      <td>149.1300</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Sydney</td>
      <td>33.8688</td>
      <td>151.2093</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Perth</td>
      <td>31.9505</td>
      <td>115.8605</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Darwin</td>
      <td>12.4634</td>
      <td>130.8456</td>
    </tr>
    <tr>
      <th>4</th>
      <td>Hobart</td>
      <td>42.8821</td>
      <td>147.3272</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[54]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#首先使用radians将角度转换成弧度</span>
<span class="kn">from</span> <span class="nn">math</span> <span class="k">import</span> <span class="n">radians</span><span class="p">,</span> <span class="n">sin</span><span class="p">,</span> <span class="n">cos</span><span class="p">,</span> <span class="n">acos</span>
<span class="n">citylld</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;slat&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">citylld</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span> <span class="n">radians</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="n">citylld</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;slon&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">citylld</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span> <span class="n">radians</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="n">samplecityd</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;elat&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">samplecityd</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span> <span class="n">radians</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="n">samplecityd</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;elon&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">samplecityd</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span> <span class="n">radians</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:357: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[key] = _infer_fill_value(value)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:537: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[item] = s
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[55]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">samplecityd</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
    <span class="n">slat</span> <span class="o">=</span> <span class="n">citylld</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;slat&quot;</span><span class="p">]</span>
    <span class="n">slon</span> <span class="o">=</span> <span class="n">citylld</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;slon&quot;</span><span class="p">]</span>
    <span class="n">elat</span> <span class="o">=</span> <span class="n">samplecityd</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="s2">&quot;elat&quot;</span><span class="p">]</span>
    <span class="n">elon</span> <span class="o">=</span> <span class="n">samplecityd</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="s2">&quot;elon&quot;</span><span class="p">]</span>
    <span class="n">dist</span> <span class="o">=</span> <span class="mf">6371.01</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">arccos</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">slat</span><span class="p">)</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">elat</span><span class="p">)</span> <span class="o">+</span> 
                          <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">slat</span><span class="p">)</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">elat</span><span class="p">)</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">slon</span><span class="o">.</span><span class="n">values</span> <span class="o">-</span> <span class="n">elon</span><span class="p">))</span>
    <span class="n">city_index</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">dist</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
    <span class="c1">#每次计算后，取距离最近的城市，然后将最近的城市和城市对应的气候都匹配到samplecityd中</span>
    <span class="n">samplecityd</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="s2">&quot;closest_city&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">citylld</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">city_index</span><span class="p">,</span><span class="s2">&quot;City&quot;</span><span class="p">]</span>
    <span class="n">samplecityd</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="s2">&quot;climate&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">citylld</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">city_index</span><span class="p">,</span><span class="s2">&quot;climate&quot;</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stderr output_text">
<pre>/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:357: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[key] = _infer_fill_value(value)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:537: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[item] = s
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:8: RuntimeWarning: invalid value encountered in arccos
  
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[56]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#查看最后的结果，需要检查城市匹配是否基本正确</span>
<span class="n">samplecityd</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[56]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>Latitudenum</th>
      <th>Longitudenum</th>
      <th>elat</th>
      <th>elon</th>
      <th>closest_city</th>
      <th>climate</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Canberra</td>
      <td>35.2809</td>
      <td>149.1300</td>
      <td>0.615768</td>
      <td>2.602810</td>
      <td>Canberra</td>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Sydney</td>
      <td>33.8688</td>
      <td>151.2093</td>
      <td>0.591122</td>
      <td>2.639100</td>
      <td>Sydney</td>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Perth</td>
      <td>31.9505</td>
      <td>115.8605</td>
      <td>0.557641</td>
      <td>2.022147</td>
      <td>Perth</td>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Darwin</td>
      <td>12.4634</td>
      <td>130.8456</td>
      <td>0.217527</td>
      <td>2.283687</td>
      <td>Darwin</td>
      <td>High humidity summer, warm winter</td>
    </tr>
    <tr>
      <th>4</th>
      <td>Hobart</td>
      <td>42.8821</td>
      <td>147.3272</td>
      <td>0.748434</td>
      <td>2.571345</td>
      <td>Hobart</td>
      <td>Cool temperate</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[57]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#查看气候的分布</span>
<span class="n">samplecityd</span><span class="p">[</span><span class="s2">&quot;climate&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[57]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Warm temperate                       15
Mild temperate                       10
Cool temperate                        9
Hot dry summer, cool winter           6
High humidity summer, warm winter     4
Hot dry summer, warm winter           3
Warm humid summer, mild winter        2
Name: climate, dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#确认无误后，取出样本城市所对应的气候，并保存</span>
<span class="n">locafinal</span> <span class="o">=</span> <span class="n">samplecityd</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,[</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[59]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">locafinal</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[59]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>City</th>
      <th>climate</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>Canberra</td>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Sydney</td>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Perth</td>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Darwin</td>
      <td>High humidity summer, warm winter</td>
    </tr>
    <tr>
      <th>4</th>
      <td>Hobart</td>
      <td>Cool temperate</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">locafinal</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Location&quot;</span><span class="p">,</span><span class="s2">&quot;Climate&quot;</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#在这里设定locafinal的索引为地点，是为了之后进行map的匹配</span>
<span class="n">locafinal</span> <span class="o">=</span> <span class="n">locafinal</span><span class="o">.</span><span class="n">set_index</span><span class="p">(</span><span class="n">keys</span><span class="o">=</span><span class="s2">&quot;Location&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[62]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">locafinal</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[62]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Climate</th>
    </tr>
    <tr>
      <th>Location</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Canberra</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>Sydney</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Perth</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Darwin</th>
      <td>High humidity summer, warm winter</td>
    </tr>
    <tr>
      <th>Hobart</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>Brisbane</th>
      <td>Warm humid summer, mild winter</td>
    </tr>
    <tr>
      <th>Adelaide</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Bendigo</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>Townsville</th>
      <td>High humidity summer, warm winter</td>
    </tr>
    <tr>
      <th>AliceSprings</th>
      <td>Hot dry summer, warm winter</td>
    </tr>
    <tr>
      <th>MountGambier</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Launceston</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>Ballarat</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>Albany</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Albury</th>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>PerthAirport</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>MelbourneAirport</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Mildura</th>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>SydneyAirport</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Nuriootpa</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Sale</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Watsonia</th>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>Tuggeranong</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>Portland</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Woomera</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Cairns</th>
      <td>High humidity summer, warm winter</td>
    </tr>
    <tr>
      <th>Cobar</th>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>Wollongong</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>GoldCoast</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>WaggaWagga</th>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>NorfolkIsland</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Penrith</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>SalmonGums</th>
      <td>Hot dry summer, cool winter</td>
    </tr>
    <tr>
      <th>Newcastle</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>CoffsHarbour</th>
      <td>Warm humid summer, mild winter</td>
    </tr>
    <tr>
      <th>Witchcliffe</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Richmond</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Dartmoor</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>NorahHead</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>BadgerysCreek</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>MountGinini</th>
      <td>Cool temperate</td>
    </tr>
    <tr>
      <th>Moree</th>
      <td>Hot dry summer, warm winter</td>
    </tr>
    <tr>
      <th>Walpole</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>PearceRAAF</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Williamtown</th>
      <td>Warm temperate</td>
    </tr>
    <tr>
      <th>Melbourne</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Nhil</th>
      <td>Mild temperate</td>
    </tr>
    <tr>
      <th>Katherine</th>
      <td>High humidity summer, warm winter</td>
    </tr>
    <tr>
      <th>Uluru</th>
      <td>Hot dry summer, warm winter</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">locafinal</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;samplelocation.csv&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[64]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#是否还记得训练集长什么样呢？</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[64]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>8</td>
      <td>Katherine</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>12</td>
      <td>Tuggeranong</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4</td>
      <td>Albany</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11</td>
      <td>Sale</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4</td>
      <td>Mildura</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#将location中的内容替换，并且确保匹配进入的气候字符串中不含有逗号，气候两边不含有空格</span>
<span class="c1">#我们使用re这个模块来消除逗号</span>
<span class="c1">#re.sub(希望替换的值，希望被替换成的值，要操作的字符串) #去掉逗号</span>
<span class="c1">#x.strip()是去掉空格的函数</span>
<span class="c1">#把location替换成气候的是我们的map的映射</span>
<span class="kn">import</span> <span class="nn">re</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#气象站的名字替换成了对应的城市对应的气候</span>
<span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">locafinal</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[67]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[67]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Location</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>8</td>
      <td>High humidity summer, warm winter</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>12</td>
      <td>Cool temperate</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4</td>
      <td>Mild temperate</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11</td>
      <td>Mild temperate</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4</td>
      <td>Hot dry summer, cool winter</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#城市的气候中所含的逗号和空格都去掉</span>
<span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="p">[</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Location&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">locafinal</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span><span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">,</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#修改特征内容之后，我们使用新列名“Climate”来替换之前的列名“Location”</span>
<span class="c1">#注意这个命令一旦执行之后，就再没有列&quot;Location&quot;了，使用索引时要特别注意</span>
<span class="n">Xtrain</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;Location&quot;</span><span class="p">:</span><span class="s2">&quot;Climate&quot;</span><span class="p">})</span>
<span class="n">Xtest</span> <span class="o">=</span> <span class="n">Xtest</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;Location&quot;</span><span class="p">:</span><span class="s2">&quot;Climate&quot;</span><span class="p">})</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[85]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[85]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Climate</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>8</td>
      <td>High humidity summer warm winter</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>12</td>
      <td>Cool temperate</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4</td>
      <td>Mild temperate</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>W</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11</td>
      <td>Mild temperate</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4</td>
      <td>Hot dry summer cool winter</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[86]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[86]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Climate</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>Cool temperate</td>
      <td>22.0</td>
      <td>27.8</td>
      <td>25.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SSW</td>
      <td>57.0</td>
      <td>S</td>
      <td>...</td>
      <td>37.0</td>
      <td>91.0</td>
      <td>86.0</td>
      <td>1006.6</td>
      <td>1008.1</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>26.2</td>
      <td>23.1</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>1</th>
      <td>3</td>
      <td>Mild temperate</td>
      <td>12.0</td>
      <td>18.6</td>
      <td>2.2</td>
      <td>3.0</td>
      <td>7.8</td>
      <td>SW</td>
      <td>52.0</td>
      <td>SW</td>
      <td>...</td>
      <td>28.0</td>
      <td>88.0</td>
      <td>62.0</td>
      <td>1020.2</td>
      <td>1019.9</td>
      <td>8.0</td>
      <td>7.0</td>
      <td>14.8</td>
      <td>17.5</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>2</th>
      <td>3</td>
      <td>Cool temperate</td>
      <td>9.1</td>
      <td>13.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>41.0</td>
      <td>N</td>
      <td>...</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>10</td>
      <td>Warm temperate</td>
      <td>13.1</td>
      <td>20.3</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SW</td>
      <td>33.0</td>
      <td>W</td>
      <td>...</td>
      <td>24.0</td>
      <td>40.0</td>
      <td>51.0</td>
      <td>1021.3</td>
      <td>1019.5</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>16.8</td>
      <td>19.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>11</td>
      <td>Mild temperate</td>
      <td>12.2</td>
      <td>20.0</td>
      <td>0.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>E</td>
      <td>33.0</td>
      <td>SW</td>
      <td>...</td>
      <td>19.0</td>
      <td>92.0</td>
      <td>69.0</td>
      <td>1015.6</td>
      <td>1013.2</td>
      <td>8.0</td>
      <td>4.0</td>
      <td>13.6</td>
      <td>19.0</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="4-&#22788;&#29702;&#20998;&#31867;&#22411;&#21464;&#37327;&#65306;&#32570;&#22833;&#20540;">4 &#22788;&#29702;&#20998;&#31867;&#22411;&#21464;&#37327;&#65306;&#32570;&#22833;&#20540;<a class="anchor-link" href="#4-&#22788;&#29702;&#20998;&#31867;&#22411;&#21464;&#37327;&#65306;&#32570;&#22833;&#20540;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[87]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#查看缺失值的缺失情况</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[87]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Month            0.000000
Climate          0.000000
MinTemp          0.004000
MaxTemp          0.003143
Rainfall         0.009429
Evaporation      0.433429
Sunshine         0.488571
WindGustDir      0.000000
WindGustSpeed    0.067714
WindDir9am       0.000000
WindDir3pm       0.000000
WindSpeed9am     0.009714
WindSpeed3pm     0.018000
Humidity9am      0.011714
Humidity3pm      0.026286
Pressure9am      0.098857
Pressure3pm      0.098857
Cloud9am         0.000000
Cloud3pm         0.000000
Temp9am          0.005429
Temp3pm          0.019714
RainToday        0.000000
dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[88]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;
RangeIndex: 3500 entries, 0 to 3499
Data columns (total 22 columns):
Month            3500 non-null int64
Climate          3500 non-null object
MinTemp          3486 non-null float64
MaxTemp          3489 non-null float64
Rainfall         3467 non-null float64
Evaporation      1983 non-null float64
Sunshine         1790 non-null float64
WindGustDir      3500 non-null object
WindGustSpeed    3263 non-null float64
WindDir9am       3500 non-null object
WindDir3pm       3500 non-null object
WindSpeed9am     3466 non-null float64
WindSpeed3pm     3437 non-null float64
Humidity9am      3459 non-null float64
Humidity3pm      3408 non-null float64
Pressure9am      3154 non-null float64
Pressure3pm      3154 non-null float64
Cloud9am         3500 non-null float64
Cloud3pm         3500 non-null float64
Temp9am          3481 non-null float64
Temp3pm          3431 non-null float64
RainToday        3500 non-null object
dtypes: float64(16), int64(1), object(5)
memory usage: 601.6+ KB
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[89]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">dtypes</span> <span class="o">==</span> <span class="s2">&quot;object&quot;</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[89]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Month            False
Climate           True
MinTemp          False
MaxTemp          False
Rainfall         False
Evaporation      False
Sunshine         False
WindGustDir       True
WindGustSpeed    False
WindDir9am        True
WindDir3pm        True
WindSpeed9am     False
WindSpeed3pm     False
Humidity9am      False
Humidity3pm      False
Pressure9am      False
Pressure3pm      False
Cloud9am         False
Cloud3pm         False
Temp9am          False
Temp3pm          False
RainToday         True
dtype: bool</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#首先找出，分类型特征都有哪些</span>
<span class="n">cate</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">dtypes</span> <span class="o">==</span> <span class="s2">&quot;object&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[91]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cate</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[91]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;Climate&#39;, &#39;WindGustDir&#39;, &#39;WindDir9am&#39;, &#39;WindDir3pm&#39;, &#39;RainToday&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#除了特征类型为&quot;object&quot;的特征们，还有虽然用数字表示，但是本质为分类型特征的云层遮蔽程度</span>
<span class="n">cloud</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Cloud9am&quot;</span><span class="p">,</span><span class="s2">&quot;Cloud3pm&quot;</span><span class="p">]</span>
<span class="n">cate</span> <span class="o">=</span> <span class="n">cate</span> <span class="o">+</span> <span class="n">cloud</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[93]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cate</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[93]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;Climate&#39;,
 &#39;WindGustDir&#39;,
 &#39;WindDir9am&#39;,
 &#39;WindDir3pm&#39;,
 &#39;RainToday&#39;,
 &#39;Cloud9am&#39;,
 &#39;Cloud3pm&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[94]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#对于分类型特征，我们使用众数来进行填补</span>
<span class="kn">from</span> <span class="nn">sklearn.impute</span> <span class="k">import</span> <span class="n">SimpleImputer</span> <span class="c1">#0.20, conda, pip</span>

<span class="n">si</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">(</span><span class="n">missing_values</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span><span class="n">strategy</span><span class="o">=</span><span class="s2">&quot;most_frequent&quot;</span><span class="p">)</span>
<span class="c1">#注意，我们使用训练集数据来训练我们的填补器，本质是在生成训练集中的众数</span>
<span class="n">si</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[94]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>SimpleImputer(copy=True, fill_value=None, missing_values=nan,
       strategy=&#39;most_frequent&#39;, verbose=0)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#然后我们用训练集中的众数来同时填补训练集和测试集</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span> <span class="o">=</span> <span class="n">si</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">])</span>
<span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span> <span class="o">=</span> <span class="n">si</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[96]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[96]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Climate</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>8</td>
      <td>High humidity summer warm winter</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>ESE</td>
      <td>26.0</td>
      <td>NNW</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>1</th>
      <td>12</td>
      <td>Cool temperate</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NNW</td>
      <td>33.0</td>
      <td>NE</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4</td>
      <td>Mild temperate</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>W</td>
      <td>NaN</td>
      <td>NE</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11</td>
      <td>Mild temperate</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>S</td>
      <td>37.0</td>
      <td>N</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4</td>
      <td>Hot dry summer cool winter</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>NNE</td>
      <td>24.0</td>
      <td>E</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[97]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[97]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Climate</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>Cool temperate</td>
      <td>22.0</td>
      <td>27.8</td>
      <td>25.2</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SSW</td>
      <td>57.0</td>
      <td>S</td>
      <td>...</td>
      <td>37.0</td>
      <td>91.0</td>
      <td>86.0</td>
      <td>1006.6</td>
      <td>1008.1</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>26.2</td>
      <td>23.1</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>1</th>
      <td>3</td>
      <td>Mild temperate</td>
      <td>12.0</td>
      <td>18.6</td>
      <td>2.2</td>
      <td>3.0</td>
      <td>7.8</td>
      <td>SW</td>
      <td>52.0</td>
      <td>SW</td>
      <td>...</td>
      <td>28.0</td>
      <td>88.0</td>
      <td>62.0</td>
      <td>1020.2</td>
      <td>1019.9</td>
      <td>8.0</td>
      <td>7.0</td>
      <td>14.8</td>
      <td>17.5</td>
      <td>Yes</td>
    </tr>
    <tr>
      <th>2</th>
      <td>3</td>
      <td>Cool temperate</td>
      <td>9.1</td>
      <td>13.3</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NE</td>
      <td>41.0</td>
      <td>N</td>
      <td>...</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>No</td>
    </tr>
    <tr>
      <th>3</th>
      <td>10</td>
      <td>Warm temperate</td>
      <td>13.1</td>
      <td>20.3</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>SW</td>
      <td>33.0</td>
      <td>W</td>
      <td>...</td>
      <td>24.0</td>
      <td>40.0</td>
      <td>51.0</td>
      <td>1021.3</td>
      <td>1019.5</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>16.8</td>
      <td>19.6</td>
      <td>No</td>
    </tr>
    <tr>
      <th>4</th>
      <td>11</td>
      <td>Mild temperate</td>
      <td>12.2</td>
      <td>20.0</td>
      <td>0.4</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>E</td>
      <td>33.0</td>
      <td>SW</td>
      <td>...</td>
      <td>19.0</td>
      <td>92.0</td>
      <td>69.0</td>
      <td>1015.6</td>
      <td>1013.2</td>
      <td>8.0</td>
      <td>4.0</td>
      <td>13.6</td>
      <td>19.0</td>
      <td>No</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[98]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#查看分类型特征是否依然存在缺失值</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[98]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Climate        0.0
WindGustDir    0.0
WindDir9am     0.0
WindDir3pm     0.0
RainToday      0.0
Cloud9am       0.0
Cloud3pm       0.0
dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[99]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[99]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Climate        0.0
WindGustDir    0.0
WindDir9am     0.0
WindDir3pm     0.0
RainToday      0.0
Cloud9am       0.0
Cloud3pm       0.0
dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[100]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="p">[</span><span class="s2">&quot;Climate&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[100]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([&#39;Cool temperate&#39;, &#39;Mild temperate&#39;, &#39;Warm temperate&#39;,
       &#39;Hot dry summer cool winter&#39;, &#39;High humidity summer warm winter&#39;,
       &#39;Hot dry summer warm winter&#39;, &#39;Warm humid summer mild winter&#39;],
      dtype=object)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="5-&#22788;&#29702;&#20998;&#31867;&#22411;&#21464;&#37327;&#65306;&#23558;&#20998;&#31867;&#22411;&#21464;&#37327;&#32534;&#30721;">5 &#22788;&#29702;&#20998;&#31867;&#22411;&#21464;&#37327;&#65306;&#23558;&#20998;&#31867;&#22411;&#21464;&#37327;&#32534;&#30721;<a class="anchor-link" href="#5-&#22788;&#29702;&#20998;&#31867;&#22411;&#21464;&#37327;&#65306;&#23558;&#20998;&#31867;&#22411;&#21464;&#37327;&#32534;&#30721;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#将所有的分类型变量编码为数字，一个类别是一个数字</span>
<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">OrdinalEncoder</span> <span class="c1">#只允许二维以上的数据进行输入</span>
<span class="n">oe</span> <span class="o">=</span> <span class="n">OrdinalEncoder</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#利用训练集进行fit</span>
<span class="n">oe</span> <span class="o">=</span> <span class="n">oe</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#用训练集的编码结果来编码训练和测试特征矩阵</span>
<span class="c1">#在这里如果测试特征矩阵报错，就说明测试集中出现了训练集中从未见过的类别</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span> <span class="o">=</span> <span class="n">oe</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">])</span>
<span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span> <span class="o">=</span> <span class="n">oe</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[104]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cate</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[104]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;Climate&#39;,
 &#39;WindGustDir&#39;,
 &#39;WindDir9am&#39;,
 &#39;WindDir3pm&#39;,
 &#39;RainToday&#39;,
 &#39;Cloud9am&#39;,
 &#39;Cloud3pm&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[105]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[105]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Climate</th>
      <th>WindGustDir</th>
      <th>WindDir9am</th>
      <th>WindDir3pm</th>
      <th>RainToday</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1.0</td>
      <td>2.0</td>
      <td>6.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0.0</td>
      <td>6.0</td>
      <td>4.0</td>
      <td>6.0</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4.0</td>
      <td>13.0</td>
      <td>4.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>1.0</td>
      <td>3.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4.0</td>
      <td>8.0</td>
      <td>3.0</td>
      <td>8.0</td>
      <td>0.0</td>
      <td>6.0</td>
      <td>6.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>2.0</td>
      <td>5.0</td>
      <td>0.0</td>
      <td>6.0</td>
      <td>0.0</td>
      <td>2.0</td>
      <td>4.0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[106]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">cate</span><span class="p">]</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[106]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Climate</th>
      <th>WindGustDir</th>
      <th>WindDir9am</th>
      <th>WindDir3pm</th>
      <th>RainToday</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0.0</td>
      <td>11.0</td>
      <td>8.0</td>
      <td>11.0</td>
      <td>1.0</td>
      <td>7.0</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>4.0</td>
      <td>12.0</td>
      <td>12.0</td>
      <td>8.0</td>
      <td>1.0</td>
      <td>8.0</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0.0</td>
      <td>4.0</td>
      <td>3.0</td>
      <td>9.0</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>6.0</td>
      <td>12.0</td>
      <td>13.0</td>
      <td>9.0</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4.0</td>
      <td>0.0</td>
      <td>12.0</td>
      <td>0.0</td>
      <td>0.0</td>
      <td>8.0</td>
      <td>4.0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[107]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[107]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Climate</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>8</td>
      <td>1.0</td>
      <td>17.5</td>
      <td>36.0</td>
      <td>0.0</td>
      <td>8.8</td>
      <td>NaN</td>
      <td>2.0</td>
      <td>26.0</td>
      <td>6.0</td>
      <td>...</td>
      <td>15.0</td>
      <td>57.0</td>
      <td>NaN</td>
      <td>1016.8</td>
      <td>1012.2</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>27.5</td>
      <td>NaN</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>12</td>
      <td>0.0</td>
      <td>9.5</td>
      <td>25.0</td>
      <td>0.0</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>6.0</td>
      <td>33.0</td>
      <td>4.0</td>
      <td>...</td>
      <td>17.0</td>
      <td>59.0</td>
      <td>31.0</td>
      <td>1020.4</td>
      <td>1017.5</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>14.6</td>
      <td>23.6</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4</td>
      <td>4.0</td>
      <td>13.0</td>
      <td>22.6</td>
      <td>0.0</td>
      <td>3.8</td>
      <td>10.4</td>
      <td>13.0</td>
      <td>NaN</td>
      <td>4.0</td>
      <td>...</td>
      <td>31.0</td>
      <td>79.0</td>
      <td>68.0</td>
      <td>1020.3</td>
      <td>1015.7</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>17.5</td>
      <td>20.8</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11</td>
      <td>4.0</td>
      <td>13.9</td>
      <td>29.8</td>
      <td>0.0</td>
      <td>5.8</td>
      <td>5.1</td>
      <td>8.0</td>
      <td>37.0</td>
      <td>3.0</td>
      <td>...</td>
      <td>28.0</td>
      <td>82.0</td>
      <td>44.0</td>
      <td>1012.5</td>
      <td>1005.9</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>18.5</td>
      <td>27.5</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4</td>
      <td>2.0</td>
      <td>6.0</td>
      <td>23.5</td>
      <td>0.0</td>
      <td>2.8</td>
      <td>8.6</td>
      <td>5.0</td>
      <td>24.0</td>
      <td>0.0</td>
      <td>...</td>
      <td>15.0</td>
      <td>58.0</td>
      <td>35.0</td>
      <td>1019.8</td>
      <td>1014.1</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>12.4</td>
      <td>22.4</td>
      <td>0.0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="6-&#22788;&#29702;&#36830;&#32493;&#22411;&#21464;&#37327;&#65306;&#22635;&#34917;&#32570;&#22833;&#20540;">6 &#22788;&#29702;&#36830;&#32493;&#22411;&#21464;&#37327;&#65306;&#22635;&#34917;&#32570;&#22833;&#20540;<a class="anchor-link" href="#6-&#22788;&#29702;&#36830;&#32493;&#22411;&#21464;&#37327;&#65306;&#22635;&#34917;&#32570;&#22833;&#20540;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">col</span> <span class="o">=</span> <span class="n">Xtrain</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[109]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">col</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[109]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;Month&#39;,
 &#39;Climate&#39;,
 &#39;MinTemp&#39;,
 &#39;MaxTemp&#39;,
 &#39;Rainfall&#39;,
 &#39;Evaporation&#39;,
 &#39;Sunshine&#39;,
 &#39;WindGustDir&#39;,
 &#39;WindGustSpeed&#39;,
 &#39;WindDir9am&#39;,
 &#39;WindDir3pm&#39;,
 &#39;WindSpeed9am&#39;,
 &#39;WindSpeed3pm&#39;,
 &#39;Humidity9am&#39;,
 &#39;Humidity3pm&#39;,
 &#39;Pressure9am&#39;,
 &#39;Pressure3pm&#39;,
 &#39;Cloud9am&#39;,
 &#39;Cloud3pm&#39;,
 &#39;Temp9am&#39;,
 &#39;Temp3pm&#39;,
 &#39;RainToday&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[110]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cate</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[110]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;Climate&#39;,
 &#39;WindGustDir&#39;,
 &#39;WindDir9am&#39;,
 &#39;WindDir3pm&#39;,
 &#39;RainToday&#39;,
 &#39;Cloud9am&#39;,
 &#39;Cloud3pm&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">cate</span><span class="p">:</span>
    <span class="n">col</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[112]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">col</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[112]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;Month&#39;,
 &#39;MinTemp&#39;,
 &#39;MaxTemp&#39;,
 &#39;Rainfall&#39;,
 &#39;Evaporation&#39;,
 &#39;Sunshine&#39;,
 &#39;WindGustSpeed&#39;,
 &#39;WindSpeed9am&#39;,
 &#39;WindSpeed3pm&#39;,
 &#39;Humidity9am&#39;,
 &#39;Humidity3pm&#39;,
 &#39;Pressure9am&#39;,
 &#39;Pressure3pm&#39;,
 &#39;Temp9am&#39;,
 &#39;Temp3pm&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#实例化模型，填补策略为&quot;mean&quot;表示均值</span>
<span class="n">impmean</span> <span class="o">=</span> <span class="n">SimpleImputer</span><span class="p">(</span><span class="n">missing_values</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">nan</span><span class="p">,</span><span class="n">strategy</span> <span class="o">=</span> <span class="s2">&quot;mean&quot;</span><span class="p">)</span>
<span class="c1">#用训练集来fit模型</span>
<span class="n">impmean</span> <span class="o">=</span> <span class="n">impmean</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">])</span>
<span class="c1">#分别在训练集和测试集上进行均值填补</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">]</span> <span class="o">=</span> <span class="n">impmean</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">])</span>
<span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">]</span> <span class="o">=</span> <span class="n">impmean</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[114]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[114]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Month            0.0
Climate          0.0
MinTemp          0.0
MaxTemp          0.0
Rainfall         0.0
Evaporation      0.0
Sunshine         0.0
WindGustDir      0.0
WindGustSpeed    0.0
WindDir9am       0.0
WindDir3pm       0.0
WindSpeed9am     0.0
WindSpeed3pm     0.0
Humidity9am      0.0
Humidity3pm      0.0
Pressure9am      0.0
Pressure3pm      0.0
Cloud9am         0.0
Cloud3pm         0.0
Temp9am          0.0
Temp3pm          0.0
RainToday        0.0
dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[115]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[115]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>Month            0.0
Climate          0.0
MinTemp          0.0
MaxTemp          0.0
Rainfall         0.0
Evaporation      0.0
Sunshine         0.0
WindGustDir      0.0
WindGustSpeed    0.0
WindDir9am       0.0
WindDir3pm       0.0
WindSpeed9am     0.0
WindSpeed3pm     0.0
Humidity9am      0.0
Humidity3pm      0.0
Pressure9am      0.0
Pressure3pm      0.0
Cloud9am         0.0
Cloud3pm         0.0
Temp9am          0.0
Temp3pm          0.0
RainToday        0.0
dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="7-&#22788;&#29702;&#36830;&#32493;&#22411;&#21464;&#37327;&#65306;&#26080;&#37327;&#32434;&#21270;">7 &#22788;&#29702;&#36830;&#32493;&#22411;&#21464;&#37327;&#65306;&#26080;&#37327;&#32434;&#21270;<a class="anchor-link" href="#7-&#22788;&#29702;&#36830;&#32493;&#22411;&#21464;&#37327;&#65306;&#26080;&#37327;&#32434;&#21270;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">col</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">&quot;Month&quot;</span><span class="p">)</span>
<span class="c1"># 不对月份进行标准化</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[118]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">col</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[118]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>[&#39;MinTemp&#39;,
 &#39;MaxTemp&#39;,
 &#39;Rainfall&#39;,
 &#39;Evaporation&#39;,
 &#39;Sunshine&#39;,
 &#39;WindGustSpeed&#39;,
 &#39;WindSpeed9am&#39;,
 &#39;WindSpeed3pm&#39;,
 &#39;Humidity9am&#39;,
 &#39;Humidity3pm&#39;,
 &#39;Pressure9am&#39;,
 &#39;Pressure3pm&#39;,
 &#39;Temp9am&#39;,
 &#39;Temp3pm&#39;]</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">StandardScaler</span> <span class="c1">#数据转换为均值为0，方差为1的数据</span>
<span class="c1">#标准化不改变数据的分布，不会把数据变成正态分布的</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">ss</span> <span class="o">=</span> <span class="n">StandardScaler</span><span class="p">()</span>
<span class="n">ss</span> <span class="o">=</span> <span class="n">ss</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">])</span>
<span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">]</span> <span class="o">=</span> <span class="n">ss</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtrain</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">])</span>
<span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">]</span> <span class="o">=</span> <span class="n">ss</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">Xtest</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="n">col</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[121]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[121]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Climate</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>8.0</td>
      <td>1.0</td>
      <td>0.826375</td>
      <td>1.774044</td>
      <td>-0.314379</td>
      <td>0.964367</td>
      <td>0.000000</td>
      <td>2.0</td>
      <td>-1.085893e+00</td>
      <td>6.0</td>
      <td>...</td>
      <td>-0.416443</td>
      <td>-0.646283</td>
      <td>0.000000</td>
      <td>-0.122589</td>
      <td>-0.453507</td>
      <td>0.0</td>
      <td>7.0</td>
      <td>1.612270</td>
      <td>0.000000</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>12.0</td>
      <td>0.0</td>
      <td>-0.427048</td>
      <td>0.244031</td>
      <td>-0.314379</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>6.0</td>
      <td>-5.373993e-01</td>
      <td>4.0</td>
      <td>...</td>
      <td>-0.182051</td>
      <td>-0.539186</td>
      <td>-1.011310</td>
      <td>0.414254</td>
      <td>0.340522</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>-0.366608</td>
      <td>0.270238</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>4.0</td>
      <td>4.0</td>
      <td>0.121324</td>
      <td>-0.089790</td>
      <td>-0.314379</td>
      <td>-0.551534</td>
      <td>1.062619</td>
      <td>13.0</td>
      <td>-1.113509e-15</td>
      <td>4.0</td>
      <td>...</td>
      <td>1.458692</td>
      <td>0.531786</td>
      <td>0.800547</td>
      <td>0.399342</td>
      <td>0.070852</td>
      <td>1.0</td>
      <td>3.0</td>
      <td>0.078256</td>
      <td>-0.132031</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>11.0</td>
      <td>4.0</td>
      <td>0.262334</td>
      <td>0.911673</td>
      <td>-0.314379</td>
      <td>0.054826</td>
      <td>-0.885225</td>
      <td>8.0</td>
      <td>-2.239744e-01</td>
      <td>3.0</td>
      <td>...</td>
      <td>1.107105</td>
      <td>0.692432</td>
      <td>-0.374711</td>
      <td>-0.763819</td>
      <td>-1.397352</td>
      <td>6.0</td>
      <td>6.0</td>
      <td>0.231658</td>
      <td>0.830540</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4.0</td>
      <td>2.0</td>
      <td>-0.975421</td>
      <td>0.035393</td>
      <td>-0.314379</td>
      <td>-0.854715</td>
      <td>0.401087</td>
      <td>5.0</td>
      <td>-1.242605e+00</td>
      <td>0.0</td>
      <td>...</td>
      <td>-0.416443</td>
      <td>-0.592734</td>
      <td>-0.815433</td>
      <td>0.324780</td>
      <td>-0.168855</td>
      <td>2.0</td>
      <td>4.0</td>
      <td>-0.704091</td>
      <td>0.097837</td>
      <td>0.0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[122]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Xtest</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[122]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Month</th>
      <th>Climate</th>
      <th>MinTemp</th>
      <th>MaxTemp</th>
      <th>Rainfall</th>
      <th>Evaporation</th>
      <th>Sunshine</th>
      <th>WindGustDir</th>
      <th>WindGustSpeed</th>
      <th>WindDir9am</th>
      <th>...</th>
      <th>WindSpeed3pm</th>
      <th>Humidity9am</th>
      <th>Humidity3pm</th>
      <th>Pressure9am</th>
      <th>Pressure3pm</th>
      <th>Cloud9am</th>
      <th>Cloud3pm</th>
      <th>Temp9am</th>
      <th>Temp3pm</th>
      <th>RainToday</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1.0</td>
      <td>0.0</td>
      <td>1.531425</td>
      <td>0.633489</td>
      <td>2.871067</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>11.0</td>
      <td>1.343150</td>
      <td>8.0</td>
      <td>...</td>
      <td>2.161868e+00</td>
      <td>1.174369</td>
      <td>1.681991</td>
      <td>-1.643646</td>
      <td>-1.067755</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>1.412848</td>
      <td>0.198404</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>3.0</td>
      <td>4.0</td>
      <td>-0.035354</td>
      <td>-0.646158</td>
      <td>-0.036285</td>
      <td>-0.794079</td>
      <td>0.107073</td>
      <td>12.0</td>
      <td>0.951369</td>
      <td>12.0</td>
      <td>...</td>
      <td>1.107105e+00</td>
      <td>1.013723</td>
      <td>0.506733</td>
      <td>0.384430</td>
      <td>0.700082</td>
      <td>8.0</td>
      <td>7.0</td>
      <td>-0.335927</td>
      <td>-0.606132</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>3.0</td>
      <td>0.0</td>
      <td>-0.489720</td>
      <td>-1.383346</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>4.0</td>
      <td>0.089450</td>
      <td>3.0</td>
      <td>...</td>
      <td>-4.163637e-16</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>10.0</td>
      <td>6.0</td>
      <td>0.136992</td>
      <td>-0.409702</td>
      <td>-0.314379</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>12.0</td>
      <td>-0.537399</td>
      <td>13.0</td>
      <td>...</td>
      <td>6.383207e-01</td>
      <td>-1.556609</td>
      <td>-0.031928</td>
      <td>0.548465</td>
      <td>0.640155</td>
      <td>7.0</td>
      <td>7.0</td>
      <td>-0.029125</td>
      <td>-0.304431</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>11.0</td>
      <td>4.0</td>
      <td>-0.004018</td>
      <td>-0.451429</td>
      <td>-0.263817</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.0</td>
      <td>-0.537399</td>
      <td>12.0</td>
      <td>...</td>
      <td>5.234093e-02</td>
      <td>1.227917</td>
      <td>0.849516</td>
      <td>-0.301537</td>
      <td>-0.303690</td>
      <td>8.0</td>
      <td>4.0</td>
      <td>-0.520009</td>
      <td>-0.390632</td>
      <td>0.0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 22 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[123]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
<span class="c1"># 标签为dataframe类型，后面要进行降维，成为一维数据</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[123]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>1</td>
    </tr>
    <tr>
      <th>4</th>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#24314;&#27169;&#19982;&#27169;&#22411;&#35780;&#20272;">&#24314;&#27169;&#19982;&#27169;&#22411;&#35780;&#20272;<a class="anchor-link" href="#&#24314;&#27169;&#19982;&#27169;&#22411;&#35780;&#20272;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">time</span> <span class="c1">#随时监控我们的模型的运行时间</span>
<span class="kn">import</span> <span class="nn">datetime</span>
<span class="kn">from</span> <span class="nn">sklearn.svm</span> <span class="k">import</span> <span class="n">SVC</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>
<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">roc_auc_score</span><span class="p">,</span> <span class="n">recall_score</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">Ytrain</span> <span class="o">=</span> <span class="n">Ytrain</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">ravel</span><span class="p">()</span>
<span class="n">Ytest</span> <span class="o">=</span> <span class="n">Ytest</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">ravel</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[126]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#建模选择自然是我们的支持向量机SVC，首先用核函数的学习曲线来选择核函数</span>
<span class="c1">#我们希望同时观察，精确性，recall以及AUC分数</span>
<span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span> <span class="c1">#因为SVM是计算量很大的模型，所以我们需要时刻监控我们的模型运行时间</span>

<span class="k">for</span> <span class="n">kernel</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;linear&quot;</span><span class="p">,</span><span class="s2">&quot;poly&quot;</span><span class="p">,</span><span class="s2">&quot;rbf&quot;</span><span class="p">,</span><span class="s2">&quot;sigmoid&quot;</span><span class="p">]:</span>
    <span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="n">kernel</span>
              <span class="p">,</span><span class="n">gamma</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span>
              <span class="p">,</span><span class="n">degree</span> <span class="o">=</span> <span class="mi">1</span>
              <span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
             <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
    
    <span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
    <span class="n">score</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
    
    <span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
    
    <span class="n">auc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
    
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> &#39;s testing accuracy </span><span class="si">%f</span><span class="s2">, recall is </span><span class="si">%f</span><span class="s2">, auc is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">kernel</span><span class="p">,</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">,</span><span class="n">auc</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>linear &#39;s testing accuracy 0.844000, recall is 0.469388&#39;, auc is 0.869029
00:01:203308
poly &#39;s testing accuracy 0.840667, recall is 0.457726&#39;, auc is 0.868157
00:01:657004
rbf &#39;s testing accuracy 0.813333, recall is 0.306122&#39;, auc is 0.814873
00:02:790032
sigmoid &#39;s testing accuracy 0.655333, recall is 0.154519&#39;, auc is 0.437308
00:03:534602
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#27169;&#22411;&#35843;&#21442;">&#27169;&#22411;&#35843;&#21442;<a class="anchor-link" href="#&#27169;&#22411;&#35843;&#21442;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="1-&#36861;&#27714;&#26368;&#39640;Recall">1 &#36861;&#27714;&#26368;&#39640;Recall<a class="anchor-link" href="#1-&#36861;&#27714;&#26368;&#39640;Recall">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[127]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
<span class="k">for</span> <span class="n">kernel</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;linear&quot;</span><span class="p">,</span><span class="s2">&quot;poly&quot;</span><span class="p">,</span><span class="s2">&quot;rbf&quot;</span><span class="p">,</span><span class="s2">&quot;sigmoid&quot;</span><span class="p">]:</span>
    <span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="n">kernel</span>
              <span class="p">,</span><span class="n">gamma</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span>
              <span class="p">,</span><span class="n">degree</span> <span class="o">=</span> <span class="mi">1</span>
              <span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
              <span class="p">,</span><span class="n">class_weight</span> <span class="o">=</span> <span class="s2">&quot;balanced&quot;</span>
             <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
    <span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
    <span class="n">score</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
    <span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
    <span class="n">auc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> &#39;s testing accuracy </span><span class="si">%f</span><span class="s2">, recall is </span><span class="si">%f</span><span class="s2">, auc is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">kernel</span><span class="p">,</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">,</span><span class="n">auc</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>linear &#39;s testing accuracy 0.796667, recall is 0.775510&#39;, auc is 0.870062
00:01:478248
poly &#39;s testing accuracy 0.793333, recall is 0.763848&#39;, auc is 0.871448
00:02:143905
rbf &#39;s testing accuracy 0.803333, recall is 0.600583&#39;, auc is 0.819713
00:03:417587
sigmoid &#39;s testing accuracy 0.562000, recall is 0.282799&#39;, auc is 0.437119
00:05:055192
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[128]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
<span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s2">&quot;linear&quot;</span>
          <span class="p">,</span><span class="n">gamma</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span>
          <span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
          <span class="p">,</span><span class="n">class_weight</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">:</span><span class="mi">15</span><span class="p">}</span> <span class="c1">#注意，这里写的其实是，类别1：10(10为类别1所占的权重)，隐藏了类别0：1这个比例</span>
         <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
<span class="n">score</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
<span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
<span class="n">auc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;testing accuracy </span><span class="si">%f</span><span class="s2">, recall is </span><span class="si">%f</span><span class="s2">, auc is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">,</span><span class="n">auc</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>testing accuracy 0.548000, recall is 0.970845&#39;, auc is 0.867172
00:02:779781
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="2-&#36861;&#27714;&#26368;&#39640;&#20934;&#30830;&#29575;">2 &#36861;&#27714;&#26368;&#39640;&#20934;&#30830;&#29575;<a class="anchor-link" href="#2-&#36861;&#27714;&#26368;&#39640;&#20934;&#30830;&#29575;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">valuec</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">(</span><span class="n">Ytest</span><span class="p">)</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[130]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">valuec</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[130]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0    1157
1     343
dtype: int64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[131]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">valuec</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">/</span><span class="n">valuec</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[131]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.7713333333333333</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#查看模型的特异度</span>
<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">confusion_matrix</span> <span class="k">as</span> <span class="n">CM</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s2">&quot;linear&quot;</span>
          <span class="p">,</span><span class="n">gamma</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span>
          <span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
         <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cm</span> <span class="o">=</span> <span class="n">CM</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">result</span><span class="p">,</span><span class="n">labels</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[135]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">cm</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[135]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([[ 161,  182],
       [  52, 1105]])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">specificity</span> <span class="o">=</span> <span class="n">cm</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="n">cm</span><span class="p">[</span><span class="mi">1</span><span class="p">,:]</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[137]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">specificity</span> <span class="c1">#几乎所有的0都被判断正确了，还有不少1也被判断正确了</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[137]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.9550561797752809</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">irange</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.01</span><span class="p">,</span><span class="mf">0.05</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[139]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">irange</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[139]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([0.01      , 0.01444444, 0.01888889, 0.02333333, 0.02777778,
       0.03222222, 0.03666667, 0.04111111, 0.04555556, 0.05      ])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[140]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">irange</span><span class="p">:</span>
    <span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
    <span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s2">&quot;linear&quot;</span>
              <span class="p">,</span><span class="n">gamma</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span>
              <span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
              <span class="p">,</span><span class="n">class_weight</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">:</span><span class="mi">1</span><span class="o">+</span><span class="n">i</span><span class="p">}</span>
             <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
    <span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
    <span class="n">score</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
    <span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
    <span class="n">auc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;under ratio 1:</span><span class="si">%f</span><span class="s2"> testing accuracy </span><span class="si">%f</span><span class="s2">, recall is </span><span class="si">%f</span><span class="s2">&#39;, auc is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">i</span><span class="p">,</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">,</span><span class="n">auc</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>under ratio 1:1.010000 testing accuracy 0.844667, recall is 0.475219&#39;, auc is 0.869157
00:01:093370
under ratio 1:1.014444 testing accuracy 0.844667, recall is 0.478134&#39;, auc is 0.869185
00:01:133078
under ratio 1:1.018889 testing accuracy 0.844667, recall is 0.478134&#39;, auc is 0.869198
00:01:114378
under ratio 1:1.023333 testing accuracy 0.845333, recall is 0.481050&#39;, auc is 0.869175
00:01:174231
under ratio 1:1.027778 testing accuracy 0.844000, recall is 0.481050&#39;, auc is 0.869394
00:01:182482
under ratio 1:1.032222 testing accuracy 0.844000, recall is 0.481050&#39;, auc is 0.869528
00:01:127803
under ratio 1:1.036667 testing accuracy 0.844000, recall is 0.481050&#39;, auc is 0.869659
00:01:199376
under ratio 1:1.041111 testing accuracy 0.844667, recall is 0.483965&#39;, auc is 0.869629
00:01:183810
under ratio 1:1.045556 testing accuracy 0.844667, recall is 0.483965&#39;, auc is 0.869712
00:01:182662
under ratio 1:1.050000 testing accuracy 0.845333, recall is 0.486880&#39;, auc is 0.869863
00:01:189984
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">irange_</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.018889</span><span class="p">,</span><span class="mf">0.027778</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[142]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">irange_</span><span class="p">:</span>
    <span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
    <span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s2">&quot;linear&quot;</span>
              <span class="p">,</span><span class="n">gamma</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span>
              <span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
              <span class="p">,</span><span class="n">class_weight</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">:</span><span class="mi">1</span><span class="o">+</span><span class="n">i</span><span class="p">}</span>
             <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
    <span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
    <span class="n">score</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
    <span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
    <span class="n">auc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;under ratio 1:</span><span class="si">%f</span><span class="s2"> testing accuracy </span><span class="si">%f</span><span class="s2">, recall is </span><span class="si">%f</span><span class="s2">&#39;, auc is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">i</span><span class="p">,</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">,</span><span class="n">auc</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>under ratio 1:1.018889 testing accuracy 0.844667, recall is 0.478134&#39;, auc is 0.869213
00:01:162071
under ratio 1:1.019877 testing accuracy 0.844000, recall is 0.478134&#39;, auc is 0.869228
00:01:133713
under ratio 1:1.020864 testing accuracy 0.844000, recall is 0.478134&#39;, auc is 0.869218
00:01:172751
under ratio 1:1.021852 testing accuracy 0.844667, recall is 0.478134&#39;, auc is 0.869188
00:01:124336
under ratio 1:1.022840 testing accuracy 0.844667, recall is 0.478134&#39;, auc is 0.869220
00:01:172664
under ratio 1:1.023827 testing accuracy 0.844667, recall is 0.481050&#39;, auc is 0.869188
00:01:197384
under ratio 1:1.024815 testing accuracy 0.844667, recall is 0.481050&#39;, auc is 0.869231
00:01:111712
under ratio 1:1.025803 testing accuracy 0.844000, recall is 0.481050&#39;, auc is 0.869253
00:01:201388
under ratio 1:1.026790 testing accuracy 0.844000, recall is 0.481050&#39;, auc is 0.869314
00:01:152890
under ratio 1:1.027778 testing accuracy 0.844667, recall is 0.481050&#39;, auc is 0.869374
00:01:211957
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.linear_model</span> <span class="k">import</span> <span class="n">LogisticRegression</span> <span class="k">as</span> <span class="n">LR</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[144]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">logclf</span> <span class="o">=</span> <span class="n">LR</span><span class="p">(</span><span class="n">solver</span><span class="o">=</span><span class="s2">&quot;liblinear&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
<span class="n">logclf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[144]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.8486666666666667</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">C_range</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[146]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">for</span> <span class="n">C</span> <span class="ow">in</span> <span class="n">C_range</span><span class="p">:</span>
    <span class="n">logclf</span> <span class="o">=</span> <span class="n">LR</span><span class="p">(</span><span class="n">solver</span><span class="o">=</span><span class="s2">&quot;liblinear&quot;</span><span class="p">,</span><span class="n">C</span><span class="o">=</span><span class="n">C</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="n">logclf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>5.0 0.8493333333333334
5.555555555555555 0.8493333333333334
6.111111111111111 0.8486666666666667
6.666666666666667 0.8493333333333334
7.222222222222222 0.8493333333333334
7.777777777777778 0.8493333333333334
8.333333333333334 0.8493333333333334
8.88888888888889 0.8493333333333334
9.444444444444445 0.8493333333333334
10.0 0.8493333333333334
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="3-&#36861;&#27714;&#24179;&#34913;">3 &#36861;&#27714;&#24179;&#34913;<a class="anchor-link" href="#3-&#36861;&#27714;&#24179;&#34913;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[148]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">C_range</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.01</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="n">recallall</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">aucall</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">scoreall</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">C</span> <span class="ow">in</span> <span class="n">C_range</span><span class="p">:</span>
    <span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
    <span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s2">&quot;linear&quot;</span><span class="p">,</span><span class="n">C</span><span class="o">=</span><span class="n">C</span><span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
            <span class="p">,</span><span class="n">class_weight</span> <span class="o">=</span> <span class="s2">&quot;balanced&quot;</span>
            <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
    <span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
    <span class="n">score</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
    <span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
    <span class="n">auc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
    <span class="n">recallall</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">recall</span><span class="p">)</span>
    <span class="n">aucall</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">auc</span><span class="p">)</span>
    <span class="n">scoreall</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">score</span><span class="p">)</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;under C </span><span class="si">%f</span><span class="s2">, testing accuracy is </span><span class="si">%f</span><span class="s2">,recall is </span><span class="si">%f</span><span class="s2">&#39;, auc is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">C</span><span class="p">,</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">,</span><span class="n">auc</span><span class="p">))</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>

<span class="nb">print</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">aucall</span><span class="p">),</span><span class="n">C_range</span><span class="p">[</span><span class="n">aucall</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">aucall</span><span class="p">))])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">C_range</span><span class="p">,</span><span class="n">recallall</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="s2">&quot;red&quot;</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;recall&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">C_range</span><span class="p">,</span><span class="n">aucall</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="s2">&quot;black&quot;</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;auc&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">C_range</span><span class="p">,</span><span class="n">scoreall</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="s2">&quot;orange&quot;</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;accuracy&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>under C 0.010000, testing accuracy is 0.800000,recall is 0.752187&#39;, auc is 0.870634
00:00:523332
under C 1.062105, testing accuracy is 0.796000,recall is 0.775510&#39;, auc is 0.870024
00:01:555503
under C 2.114211, testing accuracy is 0.794000,recall is 0.772595&#39;, auc is 0.870160
00:02:507153
under C 3.166316, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870165
00:02:934146
under C 4.218421, testing accuracy is 0.796000,recall is 0.775510&#39;, auc is 0.870112
00:03:617823
under C 5.270526, testing accuracy is 0.796000,recall is 0.775510&#39;, auc is 0.870082
00:04:132073
under C 6.322632, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870100
00:05:275516
under C 7.374737, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870022
00:05:943892
under C 8.426842, testing accuracy is 0.796000,recall is 0.775510&#39;, auc is 0.870090
00:06:095373
under C 9.478947, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870123
00:07:598509
under C 10.531053, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870092
00:08:061096
under C 11.583158, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870097
00:07:830785
under C 12.635263, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870019
00:08:996435
under C 13.687368, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870039
00:09:034215
under C 14.739474, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.869986
00:10:094592
under C 15.791579, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.869997
00:10:675077
under C 16.843684, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870032
00:12:211973
under C 17.895789, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870024
00:13:153261
under C 18.947895, testing accuracy is 0.795333,recall is 0.772595&#39;, auc is 0.870014
00:13:658839
under C 20.000000, testing accuracy is 0.794667,recall is 0.772595&#39;, auc is 0.870047
00:14:823682
0.8706340666900172 0.01
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
FJCRkUFSUhIA3bp1o7CwkMrKSgDy8/Pp0aMHgwcP5sMPPwRCAd61a9efXISIiMiRIuKec//+/cnM
zGTkyJEYhkFubi7z588nOTmZnJwcxo0bx5gxY3A6nfTr14+srCwA3n//fa655hoA7rnnnratQkRE
xEYMs/ZB5BiKdreHulKsxy51gGqxKrvUYpc6QLVEWl5TdIUwERERi1E4i4iIWIzCWURExGIUziIi
IhajcBYREbEYhbOIiIjFKJxFREQsRuEsIiJiMQpnERERi1E4i4iIWIzCWURExGIUziIiIhajcBYR
EbEYhbOIiIjFKJxFREQsRuEsIiJiMQpnERERi1E4i4iIWIzCWURExGIUziIiIhajcBYREbEYhbOI
iIjFKJxFREQsRuEsIiJiMQpnERERi1E4i4iIWIzCWURExGIUziIiIhajcBYREbEYhbOIiIjFKJxF
REQsRuEsIiJiMQpnERERi1E4i4iIWIzCWURExGIUziIiIhajcBYREbGYFoXz9OnTueaaaxg5ciRf
fPFFnWlz587lmmuuYdSoUdx33311phUXF3PmmWeyatWq6LVYRETE5iKG8+rVq9m4cSN5eXncd999
dQLY5/Mxe/Zs5s6dy7x58ygsLOTzzz8PT3/ooYfo3r1727RcRETEpiKG88qVK8nOzgagV69elJWV
4fP5AHC73bjdbsrLy/H7/VRUVJCamhq+X2JiIieeeGIbNl9ERMR+IoZzcXExaWlp4WGv10tRUREA
cXFxjB8/nuzsbC688EJOO+00evbsSXV1NX/729+444472q7lIiIiNuVq7R1M0wz/7/P5mDVrFkuX
LiUpKYmxY8eyYcMG3nrrLa666ipSUlJavNy0tARcLmdrm9Os9PTkqC4vluxSi13qANViVXapxS51
gGo5FBHDOSMjg+Li4vDwzp07SU9PB6CwsJDu3bvj9XoByMrKIj8/nw8//JBgMMjcuXPZtGkTX3zx
BY899hgnnHBCk49TUlL+U2upIz09maKivVFdZqzYpRa71AGqxarsUotd6gDVEml5TYnYrT1w4ECW
LVsGQEFBARkZGSQlJQHQrVs3CgsLqaysBCA/P58ePXrw0ksv8fLLL/Pyyy9zwQUXkJub22wwi4iI
yEER95z79+9PZmYmI0eOxDAMcnNzmT9/PsnJyeTk5DBu3DjGjBmD0+mkX79+ZGVlHY52i4iI2JZh
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
5ZYb2LLlRwYMOI9p06YxbtyNLFjwOrfccgPbtm2h//4e2iFDLgIMjjmme1RqOzJ+z7mds0stdqkD
VItV2aUWu9QBR04ts2fPokuXrgwfflmrltcUWx5zFhEROVx+//vbiYuL47rrfhu1ZSqcRUREfoKH
H34s6svUgVkRERGLUTiLiIhYjMJZRETEYhTOIiIiFqNwFhERsRiFs4iIiMUonEVERCxG4SwiImIx
lrl8p4iIiIRoz1lERMRiFM4iIiIWo3AWERGxGIWziIiIxSicRURELEbhLCIiYjHt/vecp0+fzvr1
6zEMg8mTJ9O3b9/wtI8//pi//OUvOJ1OBg8ezPjx42PY0sgeeugh1q5di9/v58Ybb+Siiy4KTxsy
ZAhdunTB6XQCMGPGDDp37hyrpjZr1apV3H777ZxwwgkAnHjiidx9993h6e1pvbzyyissWLAgPJyf
n89nn30WHs7MzKR///7h4X/+85/hdWQV3377Lb/73e+47rrrGD16NNu2bWPixIkEAgHS09N5+OGH
8Xg8de7T3OsqVhqr46677sLv9+NyuXj44YdJT08Pzx9pO4yl+rVMmjSJgoICOnbsCMC4ceO44IIL
6tzHiusEGtZy2223UVJSAkBpaSmnn346f/7zn8Pzz58/n8cee4xjjz0WgAEDBnDzzTfHpO311X8P
PvXUU2P3WjHbsVWrVpk33HCDaZqm+f3335tXX311nelDhw41t27dagYCAXPUqFHmd999F4tmtsjK
lSvN3/72t6Zpmubu3bvN888/v870Cy+80PT5fDFoWet98skn5q233trk9Pa0XmpbtWqVOW3atDrj
zjrrrBi1pmX27dtnjh492pw6dao5Z84c0zRNc9KkSebixYtN0zTNRx55xJw7d26d+0R6XcVCY3VM
nDjRXLRokWmapvnCCy+YDz74YJ37RNoOY6WxWv7whz+Y77zzTpP3seI6Mc3Ga6lt0qRJ5vr16+uM
e+2118wHHnjgcDWxxRp7D47la6Vdd2uvXLmS7OxsAHr16kVZWRk+nw+AzZs3k5qaSteuXXE4HJx/
/vmsXLkyls1t1plnnsljjz0GQEpKChUVFQQCgRi3Kvra23qp7W9/+xu/+93vYt2MVvF4PDz99NNk
ZGSEx61atYqf//znAFx44YUNnv/mXlex0lgdubm5XHzxxQCkpaVRWloaq+a1SmO1RGLFdQLN1/LD
Dz+wd+9ey+zhR9LYe3AsXyvtOpyLi4tJS0sLD3u9XoqKigAoKirC6/U2Os2KnE4nCQkJALz66qsM
Hjy4Qfdobm4uo0aNYsaMGZgWv7Db999/z0033cSoUaP46KOPwuPb23o54IsvvqBr1651uk0Bqqur
mTBhAiNHjuQf//hHjFrXNJfLRXx8fJ1xFRUV4a65Tp06NXj+m3tdxUpjdSQkJOB0OgkEArz44otc
eumlDe7X1HYYS43VAvDCCy8wZswY7rjjDnbv3l1nmhXXCTRdC8Dzzz/P6NGjG522evVqxo0bx9ix
Y/nqq6/asokt1th7cCxfK+3+mHNtVg+slnjrrbd49dVXefbZZ+uMv+222xg0aBCpqamMHz+eZcuW
cckll8Solc3r0aMHt9xyC0OHDmXz5s2MGTOG5cuXNzhW0568+uqrXHHFFQ3GT5w4kcsuuwzDMBg9
ejRZWVmceuqpMWjhoWnJa8bKr6tAIMDEiRM555xzOPfcc+tMa0/b4S9+8Qs6duxInz59eOqpp5g5
cyb33HNPk/NbeZ1A6EPr2rVrmTZtWoNpp512Gl6vlwsuuIDPPvuMP/zhD7zxxhuHv5FNqP0eXPu8
n8P9WmnXe84ZGRkUFxeHh3fu3Bnes6k/bceOHa3qRoqFDz74gCeffJKnn36a5OTkOtMuv/xyOnXq
hMvlYvDgwXz77bcxamVknTt3ZtiwYRiGwbHHHstRRx3Fjh07gPa5XiDUFdyvX78G40eNGkViYiIJ
CQmcc845ll4vByQkJFBZWQk0/vw397qymrvuuovjjjuOW265pcG05rZDqzn33HPp06cPEDr5s/52
1J7WCcCaNWua7M7u1atX+GS3fv36sXv3bsscwqv/HhzL10q7DueBAweybNkyAAoKCsjIyCApKQmA
Y445Bp/Px48//ojf72fFihUMHDgwls1t1t69e3nooYeYNWtW+IzN2tPGjRtHdXU1ENrwD5yBakUL
Fixg9uzZQKgbe9euXeEzy9vbeoHQizIxMbHBHtcPP/zAhAkTME0Tv9/PunXrLL1eDhgwYED4dbN8
+XIGDRpUZ3pzrysrWbBgAW63m9tuu63J6U1th1Zz6623snnzZiD0QbD+dtRe1skBX375Jb179250
2tNPP83ChQuB0JneXq/XEt9waOw9OJavlXb/q1QzZszg008/xTAMcnNz+eqrr0hOTiYnJ4c1a9Yw
Y8YMAC666CLGjRsX49Y2LS8vj8cff5yePXuGx5199tmcdNJJ5OTk8Nxzz/H6668TFxfHySefzN13
341hGDFscdN8Ph933nkne/bsoaamhltuuYVdu3a1y/UCoa9PPfroozzzzDMAPPXUU5x55pn069eP
hx9+mE8++QSHw8GQIUMs85WQA/Lz83nwwQfZsmULLpeLzp07M2PGDCZNmkRVVRVHH300999/P263
mzvuuIP777+f+Pj4Bq+rpt5oY1nHrl27iIuLC78Z9urVi2nTpoXr8Pv9DbbD888/P6Z1QOO1jB49
mqeeeooOHTqQkJDA/fffT6dOnSy9Tpqq5fHHH+fxxx/njDPOYNiwYeF5b775Zv7+97+zfft2fv/7
34c/1Frla2GNvQc/8MADTJ06NSavlXYfziIiInbTrru1RURE7EjhLCIiYjEKZxEREYtROIuIiFiM
wllERMRiFM4iIiIWo3AWERGxGIWziIiIxfx/rWUcHdcKcK0AAAAASUVORK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[147]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
<span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s2">&quot;linear&quot;</span><span class="p">,</span><span class="n">C</span><span class="o">=</span><span class="mf">3.1663157894736838</span><span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
          <span class="p">,</span><span class="n">class_weight</span> <span class="o">=</span> <span class="s2">&quot;balanced&quot;</span>
         <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
<span class="n">score</span> <span class="o">=</span> <span class="n">clf</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">Xtest</span><span class="p">,</span><span class="n">Ytest</span><span class="p">)</span>
<span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
<span class="n">auc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;testing accuracy </span><span class="si">%f</span><span class="s2">,recall is </span><span class="si">%f</span><span class="s2">&#39;, auc is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">,</span><span class="n">auc</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>testing accuracy 0.795333,recall is 0.772595&#39;, auc is 0.870165
00:02:857634
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#32472;&#21046;ROC&#26354;&#32447;">&#32472;&#21046;ROC&#26354;&#32447;<a class="anchor-link" href="#&#32472;&#21046;ROC&#26354;&#32447;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">roc_curve</span> <span class="k">as</span> <span class="n">ROC</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">FPR</span><span class="p">,</span> <span class="n">Recall</span><span class="p">,</span> <span class="n">thresholds</span> <span class="o">=</span> <span class="n">ROC</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">),</span><span class="n">pos_label</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">area</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[152]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">area</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[152]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0.8700469445711363</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[153]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">FPR</span><span class="p">,</span> <span class="n">Recall</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;red&#39;</span><span class="p">,</span>
         <span class="n">label</span><span class="o">=</span><span class="s1">&#39;ROC curve (area = </span><span class="si">%0.2f</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="n">area</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;black&#39;</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">([</span><span class="o">-</span><span class="mf">0.05</span><span class="p">,</span> <span class="mf">1.05</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">([</span><span class="o">-</span><span class="mf">0.05</span><span class="p">,</span> <span class="mf">1.05</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;False Positive Rate&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;Recall&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Receiver operating characteristic example&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;lower right&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">maxindex</span> <span class="o">=</span> <span class="p">(</span><span class="n">Recall</span> <span class="o">-</span> <span class="n">FPR</span><span class="p">)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">Recall</span> <span class="o">-</span> <span class="n">FPR</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[155]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">maxindex</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[155]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>198</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[156]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">thresholds</span><span class="p">[</span><span class="n">maxindex</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[156]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>-0.04892869876744821</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">accuracy_score</span> <span class="k">as</span> <span class="n">AC</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">(</span><span class="n">kernel</span> <span class="o">=</span> <span class="s2">&quot;linear&quot;</span><span class="p">,</span><span class="n">C</span><span class="o">=</span><span class="mf">3.1663157894736838</span><span class="p">,</span><span class="n">cache_size</span> <span class="o">=</span> <span class="mi">5000</span>
          <span class="p">,</span><span class="n">class_weight</span> <span class="o">=</span> <span class="s2">&quot;balanced&quot;</span>
         <span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">Xtrain</span><span class="p">,</span> <span class="n">Ytrain</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">prob</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[160]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">prob</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[160]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2.189193</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0.373116</td>
    </tr>
    <tr>
      <th>2</th>
      <td>-0.015488</td>
    </tr>
    <tr>
      <th>3</th>
      <td>-1.136262</td>
    </tr>
    <tr>
      <th>4</th>
      <td>-0.240851</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">prob</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">prob</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="n">thresholds</span><span class="p">[</span><span class="n">maxindex</span><span class="p">],</span><span class="s2">&quot;y_pred&quot;</span><span class="p">]</span><span class="o">=</span><span class="mi">1</span>
<span class="n">prob</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">prob</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">thresholds</span><span class="p">[</span><span class="n">maxindex</span><span class="p">],</span><span class="s2">&quot;y_pred&quot;</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[162]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">prob</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[162]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
      <th>y_pred</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2.189193</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0.373116</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>-0.015488</td>
      <td>1.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>-1.136262</td>
      <td>0.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>-0.240851</td>
      <td>0.0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[163]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">prob</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;y_pred&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[163]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[164]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">times</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
<span class="n">score</span> <span class="o">=</span> <span class="n">AC</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span><span class="n">prob</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;y_pred&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
<span class="n">recall</span> <span class="o">=</span> <span class="n">recall_score</span><span class="p">(</span><span class="n">Ytest</span><span class="p">,</span> <span class="n">prob</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s2">&quot;y_pred&quot;</span><span class="p">])</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;testing accuracy </span><span class="si">%f</span><span class="s2">,recall is </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">score</span><span class="p">,</span><span class="n">recall</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">times</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%M:%S:</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>testing accuracy 0.793333,recall is 0.793003
00:00:005052
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="dataframe&#21482;&#26377;1&#21015;&#25968;&#25454;&#26102;&#20063;&#26159;&#20108;&#32500;&#25968;&#25454;">dataframe&#21482;&#26377;1&#21015;&#25968;&#25454;&#26102;&#20063;&#26159;&#20108;&#32500;&#25968;&#25454;<a class="anchor-link" href="#dataframe&#21482;&#26377;1&#21015;&#25968;&#25454;&#26102;&#20063;&#26159;&#20108;&#32500;&#25968;&#25454;">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[167]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[167]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>2.189193</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0.373116</td>
    </tr>
    <tr>
      <th>2</th>
      <td>-0.015488</td>
    </tr>
    <tr>
      <th>3</th>
      <td>-1.136262</td>
    </tr>
    <tr>
      <th>4</th>
      <td>-0.240851</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[170]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[170]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(1500, 1)</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs2</span> <span class="o">=</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[172]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs2</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[172]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>array([ 2.18919301,  0.37311608, -0.01548812, ..., -1.55974682,
        0.06325694,  1.33363018])</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs3</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">(</span><span class="n">clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">(</span><span class="n">Xtest</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[174]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs3</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[174]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0       2.189193
1       0.373116
2      -0.015488
3      -1.136262
4      -0.240851
5      -1.917667
6      -1.593002
7       1.508707
8      -0.939971
9       3.081288
10     -0.209377
11      4.118457
12     -0.847167
13     -1.024524
14     -2.517159
15     -1.724186
16      0.030939
17      1.629406
18      0.881259
19      0.722849
20     -0.078500
21      0.035607
22     -2.167313
23     -0.560086
24     -0.995842
25     -0.448808
26     -0.912187
27     -0.520494
28     -0.608048
29     -0.004033
          ...   
1470    2.051443
1471   -0.322513
1472   -0.105433
1473   -0.919449
1474   -1.368898
1475    1.910553
1476    1.229059
1477    0.753579
1478    0.174073
1479   -0.586445
1480   -2.684478
1481   -1.783751
1482    1.063512
1483   -0.520426
1484    0.570712
1485   -0.766045
1486    1.427197
1487   -2.561683
1488   -0.315142
1489   -2.763501
1490    0.142289
1491   -2.241798
1492   -1.455578
1493   -1.071879
1494    1.193491
1495   -0.279249
1496   -2.310558
1497   -1.559747
1498    0.063257
1499    1.333630
Length: 1500, dtype: float64</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[175]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">probcs3</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt output_prompt">Out[175]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>(1500,)</pre>
</div>

</div>

</div>
</div>

</div>
    </div>
  </div>
</body>

 


</html>
